本文主要介绍 C++ 编程语言中 stringstream 类的相关知识,同时通过示例代码介绍 stringstream 类的使用方法。
1 概述
<sstream> 定义了三个类:istringstream、ostringstream 和 stringstream,分别用来进行流的输入、输出和输入输出操作。本文以 stringstream 为主,介绍流的输入和输出操作。
<sstream> 主要用来进行数据类型转换,由于 <sstream> 使用 string 对象来代替字符数组(snprintf 方式),避免了缓冲区溢出的危险;而且,因为传入参数和目标对象的类型会被自动推导出来,所以不存在错误的格式化符号的问题。简单说,相比 C 编程语言库的数据类型转换,<sstream> 更加安全、自动和直接。
2 示例代码
2.1数据类型转换
这里展示一份示例代码,介绍将 int 类型转换为 string 类型的过程。
示例代码(stringstream_test1.cpp)的内容如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
stringstream sstream;
string str;
int value = 0x30;
sstream << value;
sstream >> str;
cout << "str的值为:";
cout << str << endl;
return 0;
}
运行结果如下:
2.2 多个字符串拼接
本示例介绍在 stringstream 中存放多个字符串,实现多个字符串拼接的目的(其实完全可以使用 string 类实现),同时,介绍 stringstream 类的清空方法。
示例代码(stringstream_test2.cpp)的内容如下:
#include <bits/stdc++.h>
using namespace std;
int main() {
stringstream sstream;
// 将多个字符串放入 sstream 中
sstream << "I" << " " << "love";
sstream << " C++";
cout << "strResult is: " << sstream.str() << endl;
// 清空 sstream
sstream.str("");
sstream << "Finish!Thank you.";
cout << "After clear, strResult is: " << sstream.str() << endl;
return 0;
}
运行结果如下:
从上述代码执行结果能够知道:
可以使用 str() 方法,将 stringstream 类型转换为 string 类型;
可以将多个字符串放入 stringstream 中,实现字符串的拼接目的;
如果想清空 stringstream,必须使用 sstream.str(""); 方式;clear() 方法适用于进行多次数据类型转换的场景。详见示例 2.3。
2.3 stringstream的清空
清空 stringstream 有两种方法:clear() 方法以及 str("") 方法,这两种方法对应不同的使用场景。str("") 方法的使用场景,在上面的示例中已经介绍过了,这里介绍 clear() 方法的使用场景。
示例代码(stringstream_test3.cpp)的内容如下:
#include <bits/stdc++.h>
using namespace std;
int main() {
stringstream sstream;
unsigned int first, second;
// 插入字符串
sstream << "4294967295";
// 转换为int类型
sstream >> first;
cout << first << endl;
// 在进行多次类型转换前,必须先运行clear()
sstream.clear();
// 插入bool值
sstream << false;
// 转换为int类型
sstream >> second;
cout << second << endl;
return 0;
}
运行效果如下:
最后
谢谢阅读!
本文对liitdar大佬的文章多有借鉴,原文链接如下: