C++ 的 stringstream 类是一个基于字符串的流,我们可以用它进行格式化输入和输出。在使用 stringstream 进行格式化输出时,可以通过设置类似 printf 函数的格式字符串来控制输出的格式。同时,在使用 stringstream 进行格式化输入时,我们可以根据一个给定的格式字符串来解析输入的字符串数据。接下来,我将详细介绍如何使用 C++ stringstream 进行格式化输入输出。
格式化输出
下面是一个简单的代码示例,展示了如何使用 stringstream 进行格式化输出:
#include <sstream>
#include <iostream>
int main()
{
std::stringstream ss;
int i = 12;
double d = 3.14;
std::string s = "hello";
ss << "i = " << i << ", d = " << d << ", s = " << s;
std::cout << ss.str() << std::endl;
return 0;
}
代码中,我们首先通过创建一个 stringstream 对象 ss 来存储要输出的数据。然后,我们依次使用串联操作符 << 将不同类型的数据加入到 ss 中,最后输出整个 ss 容器中的内容。
在这个例子中,我们输出了一个 int 类型、一个 double 类型和一个字符串类型的变量。这里,ostringstream 会自动将输入流中添加的各种类型的数据转换为字符串类型,并存储在它的内部缓冲区中。我们最后调用 stringstream 对象的 str() 方法,将缓冲区中的字符串结果返回。通过这个例子,我们可以看到 stringstream 是将不同类型的数据格式化为字符串的一个好工具。
下面是另一个简单的代码示例:
#include <sstream>
#include <iostream>
int main()
{
std::stringstream ss;
int i = 12;
double d = 3.14;
std::string s = "hello";
ss << std::hex << i << " " << d << " " << s;
std::cout << ss.str() << std::endl;
return 0;
}
代码中,我们首先通过创建一个 stringstream 对象 ss 来存储要输出的数据。然后,我们使用串联操作符 << 不仅将数据加入 ss 中,而且使用 std::hex 格式标记,将 i 变量的输出格式设置为十六进制。最终结果是将 i 转化为十六进制数字来输出,另外 d 和 s 变量也被输出到了结果中。
格式化输入
下面是一个简单的代码示例,展示了如何使用 stringstream 进行格式化输入:
#include <iostream>
#include <string>
#include <sstream>
int main()
{
std::string input = "12 3.14 hello";
std::stringstream ss(input); // 从 input 字符串中读取数据
int i;
double d;
std::string s;
ss >> i >> d >> s; // 格式化输入 字符串到不同的类型
if (ss.fail()) { // 判断流是否发生错误,避免输出无效数据
std::cout << "格式化输入发生错误" << std::endl;
return 1;
}
std::cout << "i = " << i << ", d = " << d << ", s = " << s << std::endl;
return 0;
}
代码中,我们首先创建了一个字符串 input,其中包含一个 int 类型、一个 double 类型和一个 std::string 类型的数据,这些数据被空格分隔开。然后,我们使用 stringstream 来读取字符串 input 中的数据,依次将它们转换为 int、double 和 std::string 类型,并存储在变量 i、d 和 s 中。最后,我们输出这些变量的值。
另外一个简单的代码示例是:
#include <iostream>
#include <sstream>
int main()
{
std::string input = "1.23 2.34 3.45";
std::stringstream ss(input); // 从 input 字符串中读取数据
double a[3];
for (int i = 0; i < 3; ++i) {
ss >> a[i];
if (ss.fail()) { // 判断流是否发生错误,避免输出无效数据
std::cout << "格式化输入发生错误" << std::endl;
return 1;
}
}
std::cout << "a[0] = " << a[0] << ", a[1] = " << a[1] << ", a[2] = " << a[2] << std::endl;
return 0;
}
代码中,我们创建了一个包含三个浮点数的字符串 input,这些浮点数之间用空格隔开。然后,我们使用 stringstream 类从 input 字符串中读取数据,并将其存储到一个浮点数数组中。最终,我们输出了浮点数数组中存储的数据。
通过这个代码示例及上个示例,我们了解了使用 stringstream 进行格式化输入时的一些常见方法和技巧。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ stringstream格式化输出输入详情 - Python技术站