字符串流输出的原因
Reason for this output of stringstream?
我正在尝试学习字符串流,我有以下代码:
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
stringstream os;
os.str("Purohit");
os << "Vipul" << endl;
cout << os.str() << endl;
}
当我编译并运行它时,我得到以下输出:
Vipul
t
为什么?这不应该输出普罗希特维普尔吗?
这是因为str
方法替换了stringstresm
的内容,而没有将后续写入的缓冲区指针放在流的末尾。这就是为什么当你输出"Vipuln"
时,它会写下你之前放入流中的"Purohit"
字符串:
初始状态
0 1 2 3 4 5 6
P u r o h i t
^
<<
后写:
0 1 2 3 4 5 6
V i p u l n t
在追加"Vipul"
字符串之前,可以调用 seekg
来设置位置,但更简单的解决方法是对两次写入都使用 <<
。
相关文章:
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何从void函数输出字符串
- 输出字符串数组
- 如何输出字符串第二个单词的第一个字母?
- 多线程环境中的输出字符串流出现问题
- 输出字符串到cmd显示的右显示,但未被认为是命令
- 读取文本文件并输出字符串
- 输出字符串使用 C++ 覆盖 Linux 终端上的最后一个字符串
- 如何在C++中输出字符串的向量
- 无法从类模板输出字符串
- FWRITE 输出字符串不正确
- Qt单元测试输出字符串长度截止
- 无法显示输出字符串
- 如果条目大于90,则输出字符串的布尔函数
- C++不带 'n' 或 endl 的输出字符串将在字符串末尾输出'#'
- 在C++中输出字符串和 strncpy 时遇到问题
- 获取c#输出字符串参数值为c++ BSTR*
- C++初学者,开关不输出字符串的第一个字符
- 输出字符串/字符错误(c++)
- Getline()省略输出字符串的第一个字母