使用字符数组作为字符串流缓冲区

时间:2014-10-17 05:55:51

标签: c++ stl stringstream

我正在寻找一种干净的STL方式来使用现有的C缓冲区(char *和size_t)作为字符串流。我更喜欢使用STL类作为基础,因为它具有内置的安全措施和错误处理。

注意:我不能使用其他库(否则我会使用QTextStream

1 个答案:

答案 0 :(得分:6)

您可以尝试使用std::stringbuf::pubsetbuf。它调用setbuf,但它的实现定义是否会产生任何影响。如果是这样,它将用char数组替换底层字符串缓冲区,而不像正常那样复制所有内容。值得一试,IMO。

使用以下代码进行测试:

std::istringstream strm;
char arr[] = "1234567890";

strm.rdbuf()->pubsetbuf(arr, sizeof(arr));
int i;
strm >> i;
std::cout << i;

Live demo.