stringstream
-
简介——
stringstream
翻译过来就是字符串流,主要用来进行数据的类型转换
-
stringstream
用处:可以使用输入和输出流上允许的任何操作从流中插入或提取字符 -
所需头文件:
sstream
-
下面用代码来解释插入和提取操作
#include <iostream>
#include <sstream>
#include <cstring>
using namespace std;
int main()
{
stringstream input;
string str;
int val;
// stringstream 有两种常见操作,一个是插入,一个是提取
input << "666666"; // 插入
input >> val; // 提取并转换为int类型
cout << val << endl;
// 还可以在一开始就定义input
getline(cin, str); // 相较于cin可以读入空格,相当于读入一行的字符串,需要的头文件为<cstring>
stringstream input(str);
// 清空操作
str.clear();
// 能插入的不仅仅只有字符串, 还可以是别的类型, 如int, bool等等
val = 123456;
input << val;
input >> str;
cout << str << endl;
return 0;
}
输出结果:
666666
123456
补充的一点知识
sscanf的使用
-
int sscanf(const char * s, const char * format, ...);
-
参数介绍:
s
: 表示用于要处理的字符串,也就是要用来转换格式的那个字符串(后面代码会更直观)。format
: 又叫格式,是要转换的格式,但仅限于C中的,例如%d
,%s
,%c
等等。...(附加参数)
: 是用来存储转换后的类型的值,必须为指针
。 -
返回值:成功时返回的是成功填充的项目数。失败则返回EOF
-
例
/*sscanf example*/
#include <cstdio>
int main()
{
char s[] = "hhs 183 handsome";
char str[10];
int x;
sscanf (s, "%s %d", str, &x);
printf ("%s %d", str, x);
return 0;
}
输出结果:
hhs 183
上述仅为我个人理解,有错误还请各位大佬指正