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

我正在寻找一种将现有C缓冲区(char *和size_t)用作字符串流的干净的STL方法.我更喜欢使用STL类作为基础,因为它具有内置的防护措​​施和错误处理功能.

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

解决方法:

您可以尝试使用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.

上一篇:c-将多个单词提取到一个字符串变量


下一篇:C比较并替换stringstream的最后一个字符