📅  最后修改于: 2023-12-03 15:14:03.172000             🧑  作者: Mango
在C++中,stringstream是一个非常重要的工具,它允许将字符串和数字相互转化,同时也可用于快速格式化输出等多个方面。
stringstream是一个基于string类的流输入/输出对象,其语法类似于C++中的iostream。
我们可以通过以下方式声明和初始化一个stringstream对象:
#include <sstream>
#include <string>
// 声明和初始化一个stringstream对象
std::stringstream ss;
std::string str = "Hello World!";
ss << str;
在上述代码中,我们将string类型的变量str插入到了一个stringstream对象ss中。插入操作符<<将字符串插入到了输出流中,表示我们将str作为输出流的数据源。此时,ss中储存了字符串"Hello World!"。
另一方面,如果我们想要从一个stringstream对象中读取数据,则可以使用输入操作符>>。例如:
#include <sstream>
#include <string>
// 声明和初始化一个stringstream对象
std::stringstream ss("123 45.67 hello world");
int a; // 定义整型变量a
double b; // 定义浮点型变量b
std::string c, d; // 定义两个字符串变量
ss >> a >> b >> c >> d; // 将每个数据读取到对应的变量中
std::cout << a << std::endl; // 输出:123
std::cout << b << std::endl; // 输出:45.67
std::cout << c << std::endl; // 输出:"hello"
std::cout << d << std::endl; // 输出:"world"
在这个例子中,stringstream对象ss中储存了一串包括整型数值、浮点型数值、字符串等多种数据类型的字符,并通过输入操作符>>将每一个数据读取到了对应的变量中。
需要注意的是,在读取完一部分数据后,完成后我们不必显式地关闭或清除stringstream对象。我们可以将其视为一个缓存区,等待下一次操作。
stringstream的一个重要应用是将数字转化为字符串。当我们需要在程序中用到数字或数值型数据的时候,通常情况下需要将它们转化成字符串类型。这可以通过以下方式完成:
#include <sstream>
#include <string>
int num = 123;
std::stringstream ss;
ss << num;
std::string str;
ss >> str; // 字符串变量str中储存了123
在这个例子中,我们将一个整型数值num储存到了一个stringstream对象ss中,然后通过输入操作符>>将其读取到了字符串变量str中。此时,str中储存的是整型数值123的字符串形式。
如果我们需要将一个数字字符串转化为数字型数据,我们也可以利用stringstream。以下是一个例子:
#include <sstream>
#include <string>
std::string str = "123.45";
std::stringstream ss;
ss << str;
double num;
ss >> num; // 将字符串str转化为实数double型数据
在这个例子中,我们将字符串"123.45"储存到了stringstream对象ss中,然后通过输入操作符>>将其转化为实数double型数据num。
除了以上两个应用外,stringstream还可以用来快速格式化输出。假设我们有一些数据需要输出,而我们需要把它们连接成一个字符串,在输出到控制台或写入文件。我们可以使用stringstream的输出操作符<<完成这一操作:
#include <sstream>
#include <string>
int a = 123;
double b = 45.67;
std::string c = "Hello";
std::stringstream ss;
ss << a << " " << b << " " << c;
std::string output;
ss >> output; // 将“123 45.67 Hello”格式化为一个字符串
std::cout << output << std::endl; // 输出:123 45.67 Hello
在这个例子中,我们将整型数值a、浮点型数值b和字符串c插入到了一个stringstream对象ss中,然后使用输出操作符<<完成了格式化输出。最终字符串变量output中储存了格式化后的输出。
在C++中,stringstream是一个非常重要的工具,可以将字符串和数字互相转换,也可以用于快速格式化输出。掌握stringstream的使用方法对于实际开发和调试都具有极大的帮助。