C++ ostringstream、istringstream、stringstream 用法浅析
参考网址:https://blog.csdn.net/hellokandy/article/details/54585174
ios_base::ate和ios_base::app的区别
参考网址:https://blog.csdn.net/zhegfengtantan/article/details/8011785
ios_base::ate和ios_base::app都将文件指针指向打开文件的文件尾。区别:
ios_base::app模式只允许将数据添加到文件尾;
ios_base::ate模式将指针放到文件尾。
ostringstream : 用于执行C风格字符串的输出操作。
istringstream : 用于执行C风格字符串的输入操作。
stringstream : 同时支持C风格字符串的输入输出操作。
通常,ostringstream 类用来格式化字符串,避免申请大量的缓冲区,替代sprintf。该类能够根据内容自动分配内存,其对内存管理也是相当到位。
示例代码如下:
-
#include <string>
-
#include <sstream>//
-
#include <iostream>
-
//ostringstream 用于执行C风格字符串的输出操作
-
void ostringstream_test()
-
{
-
//ostringstream 只支持 << 操作符
-
std::ostringstream oss;
-
oss << "this is test" << 123456;
-
oss.str("");//清空之前的内容
-
//oss.clear();//并不能清空内存
-
//浮点数转换限制
-
double tmp = 123.1234567890123;
-
oss.precision(12);
-
oss.setf(std::ios::fixed);//将浮点数的位数限定为小数点之后的位数
-
oss << tmp;
-
std::cout << oss.str() << "\r\n" << std::endl;
-
}
-
//istringstream 用于执行C风格字符串的输入操作
-
void istringstream_test()
-
{
-
//istringstream 只支持 >> 操作符
-
std::string str = "welcome to china";
-
std::istringstream iss(str);
-
//把字符串中以空格隔开的内容提取出来
-
std::string out;
-
while(iss >> out)
-
{
-
std::cout << out << std::endl;
-
}
-
std::cout << "\r\n" << std::endl;
-
}
-
//stringstream 同时支持C风格字符串的输入输出操作
-
void stringstream_test()
-
{
-
//输入
-
std::stringstream ss;
-
ss << "hello this is kandy " << 123;
-
std::cout << ss.str() << "\r\n" << std::endl;
-
//输出
-
std::string out;
-
while(ss >> out)
-
{
-
std::cout << out.c_str() << std::endl;
-
}
-
std::cout << "\r\n" << std::endl;
-
}
-
int main()
-
{
-
ostringstream_test();
-
istringstream_test();
-
stringstream_test();
-
system("pause");
-
return 0;
-
}
输出结果: