ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

string用法工具箱

2019-12-16 09:01:00  阅读:348  来源: 互联网

标签:string C++ 用法 char str stringstream 字符串 工具箱


string逆序:

string str;

cin<<str;

string s(str.rbegin(),str.rend());

cout << s <<endl;

   

如果写成string s(str.end(),str.begin());会报错 "终端反馈超出了string的最大长度"

   

类型转换:string转vector<char>

    string str("iloveyou");

    vector <char> ta;

    ta.resize(str.size());

    ta.assign(str.begin(),str.end());

再转回来

str.clear();

    str.assign(ta.begin(),ta.end());

c++ 将一个char 转化为string

const char c = 'a';

//1.使用 string 的构造函数

string s(1,c);

//2.声明string 后将char push_back

string s1;

s1.push_back(c);

//3.使用stringstream

stringstream ss;

ss << c;

string str2 = ss.str();

   

//注意 使用to_string 方法会转化为char对应的ascii码

//原因是 to_string 没有接受char型参数的函数原型,有一个参数类型

//为int 的函数原型,所以传入char型字符 实际是先将char 转化

//为int 型的ascii 码,然后再转变为string

//以下输出结果为 97

cout << to_string(c) << endl;

   

C++中将string按照空白字符分割的新方法

   

使用stringstream对象简化类型转换

首先要引入头文件<sstream>,C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性、类型安全和可扩展性。

<sstream>库是最近才被列入C++标准的。(不要把<sstream>与标准发布前被删掉的<strstream>弄混了。)因此,老一点的编译器,如GCC2.95,并不支持它。如果你恰好正在使用这样的编译器而又想使用<sstream>的话,就要先对它进行升级更新。

<sstream>库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。另外,每个类都有一个对应的宽字符集版本。简单起见,我主要以stringstream为中心,因为每个转换都要涉及到输入和输出操作。

注意,<sstream>使用string对象来代替字符数组。这样可以避免缓冲区溢出的危险。而且,传入参数和目标对象的类型被自动推导出来,即使使用了不正确的格式化符也没有危险。

   

一个实例

   

#include<iostream>

#include<string>

#include<sstream>

#include<vector>

using namespace std;

   

int main(){

//用于存放分割后的字符串

vector<string> res;

//待分割的字符串,含有很多空格

string word=" Hello, I want to learn C++! ";

//暂存从word中读取的字符串

string result;

//将字符串读到input中

stringstream input(word);

//依次输出到result中,并存入res中

while(input>>result)

res.push_back(result);

//输出res

for(int i=0;i<res.size();i++){

cout<<res[i]<<endl;

}

return 0;

}

总结

1. <sstream>还能实现自动类型转换,我会在以后写一些利用它进行数据类型转换的文章。

2. 在C++ Primer书中曾经提到过:

   

int main(){

string s;

cin>>s;

cout<<s<<endl;

return 0;

}

This program begins by defining a string named s. The next line,

cin>>s

reads the standard input storing what is read into s. The string input operator:

(1) Reads and discards any leading whitespace(e.g.,spaces,mewlines,tabs).

(2) It then reads characters until the next whitespace character is encountered.

也就是说输入的字符串不管有多少空格,传入cin的只有第一个非空白字符下次再遇到空白字符之间的字符串。例如:输入的字符串为" Hello, I want to learn C++! ",则传入cin的只有"Hell0,"。这一点非常重要,必须牢记在心。

————————————————

版权声明:本文为CSDN博主「猫小时候」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/oNever_say_love/article/details/49123935

标签:string,C++,用法,char,str,stringstream,字符串,工具箱
来源: https://www.cnblogs.com/xukaiae86/p/12047334.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有