c++ - 在不复制整个缓冲区的情况下获取字符串流中的最后一个字符

标签 c++ string stringstream seek

如果我使用这段代码:

template <typename Streamable>
/* ... */
std::stringstream ss;
ss << function_yielding_a_Streamable();
auto last_char = ss.str().back();

然后(我相信)需要在 ss 的缓冲区中创建一个字符串的拷贝,只是为了让我获取最后一个字符,然后它将被销毁。我可以做些更好的事吗?也许使用 seekp() 方法?

最佳答案

你可以这样做:

char last_char;
std::stringstream ss;
ss << function_yielding_a_Streamable();
ss.seekg(-1,ios::end);//get to the last character in the buffer
ss>>last_char;

关于c++ - 在不复制整个缓冲区的情况下获取字符串流中的最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36743452/

相关文章:

c# - 将 Unity texture2d 转换为 ffmpeg 的 YUV420P

c++ - Cygwin C++ 开发

c++ - 为什么 ostream 为定义为 `1` 的字符串打印 `volatile char[]` ?

c++ - 从组件构造字符串的最佳方法,iostream 样式

C++ 将简单值转换为字符串

c++ - ostringstream、.str() 和重置/清除流

c++ - DEFINE() 宏在表达式中的使用

c++ - 如何分析内存使用情况?

javascript - 对包含数字和字符串的数组进行排序

C++如何将函数参数转换为字符串