string与stringstream
string
string是c++提供的字符串型,和c的字符串相比,除了有不限长度的优点外,还有其它许多方便的功能。
首先加入#include\
,声明变量可以写成string s;s=”hello”
,也可以直接设置其值string s = “TCGS”
,如果要取得其中一个字符,和传统的c语言一样是用s[i]取得。比较不一样的是如果s有三个字符,传统c的字符s[3]是0字元,但是c++的string则是只到s[2]这个字符而已。
操作:
- 声明:
+ string:string s
+ 字符阵列:char s[100]
- 取得第i个字符
+ string:s[i]
+ 字符阵列:s[i]
- 字符串长度
+ string:s.length()
+ 字符阵列:strlen(s)
- 读取一行
+ string:getline(cin, s)
+ 字符阵列:gets(s)
- 设成某字符串
+ string:s="TSS"
+ 字符阵列:strcpy(s, 'TSS')
- 字符串相加
+ string:s = s + 'TSS'
+ 字符阵列:strcat(s, 'TSS')
- 字符比较
+ string:s=='TSS'
+ 字符阵列:strcmp(s, 'TSS')
stringstream
stringstream是c++提供的另一个字符串型的串流物件,要使用stringstream,必须先加入这一行:#include
,stringstream主要是用在将一个字符串分割,可以先用clear()以及str()将指定字符串设定成一开始的内容,再用>>把个别的资料输出,例如:
|
|
题目:输入的第一行有一个数字N代表接下来N行资料,每一行资料里有不固定个数的整数(最多20个,每行最大200个字符),请你写一个算法将每行的总和打印出来
輸入:
3
1 2 3
20 17 23 54 77 60
111 222 333 444 555 666 777 888 999
輸出:
6
251
4995
程序:
|
|
stringstream是字符串流,可以用来数据切分或者类型转化。
string到int的转换
在类型转化中使用模板。to_string()函数将t转化为字符串并写入result中。使用str()成员函数来获取流内部缓存的一份拷贝:
|
|
可以更进一步定义一个通用的转化模板,用于任意类型之间的转换。函数模板convert()含有两个模板参数out_type和in_type,功能是将in_value值转换成out_type类型:
|
|
在进行多次转换的时候,必须调用stringstream的成员函数clear()函数