如何将内容附加到字符串流类型对象
How to append content to stringstream type object?
我正在使用字符串流的对象,如下所示:
#include<iostream>
#include <istream>
using namespace std;
int main()
{
sting str="my.string";
std::stringstream message("HI this is firet line from initialization");
message << " second line " << " Continuing second line";
message << ", Add values: ";
message << str ;
std::cout<<"message value is :"<<message.str()<<std::endl;
return 0;
}
使用上面的代码,它会给出如下错误:
error: variable 'std::stringstream message' has initializer but incomplete type
一旦我添加了"#包括";头文件。但是当我打印消息的值时。它越来越不完整。即,我得到的消息值如下:
消息值为:第二行继续第二行,添加值:my.string
关于为什么第一行在输出中被删除,有什么建议吗?提前感谢
stringstream
在不同的标头中定义:
#include <sstream>
此外,如果你想让最初的内容保持不变,你会想要一些类似的东西:
std::stringstream message("HI this is firet line from initialization",
ios_base::app | ios_base::out);
其中CCD_ 2表示每个输出操作都写入流的末尾。请参见此处。
根据Vlad的回答,我刚刚尝试了以下操作(在GCC 4.7.0中,在Windows 7上为mingw:x86_64-w64-mingw32)
std::stringstream ss("initial string", ios_base::app | ios_base::out);
ss << " appended string";
但之后,ss.good()
会立即返回false,这很令人困惑,因为ss.str()
仍在返回我所期望的附加字符串"initial string appended string"
。我终于偶然发现了http://www.cplusplus.com/reference/sstream/stringstream/stringstream/:
也可以指定ios_base::openmode类型的其他值(如ios_base::app),尽管它们是否对字符串流对象有影响取决于库实现。
在阅读了关于"标准"ios_base::
标志之后,我尝试了这个,它给了我所期望的附加流内容,ss.good()
返回true
:
std::stringstream ss("initial string", ios_base::ate | ios_base::in | ios_base::out);
[p.S.我宁愿把它作为对Vlad答案的评论发布,因为这不是一个直接的答案;这只是对他在使用operator <<
时保留以前流内容的建议的评论。由于我没有足够的信誉点来评论他的答案,但我认为这对其他人会有用,所以我把它作为一个答案发布。]
- 如何检查模板类中的变量是否为字符串类型?
- C++类字符串类型的迭代器
- 如何将字符串指针数组转换为字符串类型的智能指针向量?
- 字符串类型的 2d 数组(C++;)
- 在 Rcpp 中的字符串类型之间转换时出错
- 为什么字符串类型会导致 c++ 程序无法运行?
- 如何将字符串类型转换为 ostringstream
- 当正斜杠运算符应用于C++中的字符串类型时,它会做什么
- 添加字符串类型的类成员会导致调用基类函数而不是子函数
- 我在 c++ 中声明字符串类型时遇到问题
- 对齐C++字符串类型问题 std::字符串到 TStr
- C++无符号字符串类型的正则表达式
- 当 JSON 值应为 INT 但以字符串类型发送时,RapidJSON 崩溃
- 如何使用 std::find 从向量的第一个元素中查找字符串<字符串对<字符串、字符串> >类型?
- 我想添加两个字符串类型的矩阵.用户将不会输入行数或列的数量.用户将仅输入数组
- 为什么数组(字符串类型)的大小是 24 字节,带有单个空格元素
- 如何根据定义的字符串类型在“std::cout”和“std::wcout”之间进行选择
- C++ 仅当模板为字符串类型时执行小写转换
- 字符串类型的 C++ 模板无法编译
- 如何使用新字符串而不是分配器创建自己的字符串类型向量?