我如何使用写与stringstream
How do I use write with stringstream?
本文关键字:stringstream 何使用 更新时间:2023-10-16
我有一个vector<char>
的数据,我想写入std::stringstream
。
我试着:
my_ss.write(vector.data(), vector.size());
…但它似乎没有放入my_ss
,我声明如下:
std::stringstream my_ss( std::stringstream::binary);
为什么写不工作(应用程序不崩溃和编译0错误,0警告)?
对于"我该怎么做"你可以使用std::ostream_iterator
:
std::copy(vector.begin(), vector.end(), std::ostream_iterator<char>(my_ss));
完整的示例:
#include <iterator>
#include <sstream>
#include <vector>
#include <iostream>
#include <algorithm>
int main() {
std::vector<char> vector(60, 'a');
std::ostringstream my_ss;
std::copy(vector.begin(), vector.end(), std::ostream_iterator<char>(my_ss));
std::cout << my_ss.str() << std::endl;
}
你也可以直接用它来构造一个string
,而不需要经过stringstream
:
std::string str(vector.begin(), vector.end()); // skip all of the copy and stringstream
虽然您没有给出任何代码,但听起来您可能刚刚写了:
std::stringstream my_ss (std::stringstream::binary);
如果您希望写入stringstream,则需要在构造函数中组合std::stringstream::out
标志。如果我是对的,那么你会看到,如果你把它改为:
std::stringstream my_ss (std::stringstream::out | std::stringstream::binary);
(显然,如果你想从stringstream中读取,你需要添加std::stringstream::in
)
UPDATE现在你已经给出了你的代码…是的,这是你的具体问题。请注意@awoodland的观点,即您可以直接从字符向量构造字符串(如果这是您计划对该流做的唯一事情)
stringstream中stringbuf模式的默认参数为out|in。
explicit basic_stringstream(ios_base::openmode _Mode =
ios_base::in | ios_base::out)
: _Mybase(&_Stringbuffer),
_Stringbuffer(_Mode)
{ // construct empty character buffer
}
如果您显式传递stringstream:binary
,则需要添加stringstream::out或者直接使用std::ostringstream
相关文章:
- 如何在 C 中正确使用 libiconv 使其不会报告"Arg list too long"?
- std::vector的包装器,使数组的结构看起来像结构的数组
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 如何在全屏模式下(在OpenGL中)使背景透明
- 找到两对数字,使它们的乘积的绝对差最小化
- C++:如何使函数只返回作为列表一部分的字符串
- Python中的for循环与C++有何不同
- c++使用foreach使数组为null
- 使外部项目可用于find_package CMake
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 是否可以在C++中使变量真正只读
- 有可能使shared_ptr协变吗
- 使lambda不可复制/不可移动
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 如何使用OpenMP使这个循环并行
- 根据变量使Qt UI中的复选框为已选中/未选中
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 如何使基类的运算符对基类的可变参数数可见(请参阅下面的代码)?
- 与std::stringstream一起使用时,std::setw出现意外行为
- C++11编译器何时会使RVO和NRVO优于移动语义和常量引用绑定