C++ ostringstream、istringstream、stringstream 用法浅析
参考网址:https://blog.youkuaiyun.com/hellokandy/article/details/54585174
ios_base::ate和ios_base::app的区别
参考网址:https://blog.youkuaiyun.com/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; -
}
输出结果:

本文深入探讨C++中的sstream库,包括ostringstream用于输出,istringstream用于输入,以及stringstream支持双向操作。文章介绍了ios_base::ate和ios_base::app的区别,并通过示例代码展示ostringstream的使用,强调其在内存管理和格式化字符串方面的优势。
529

被折叠的 条评论
为什么被折叠?



