C++ ostringstream.str().c_str()
C++ ostringstream.str().c_str()
我想以二进制形式打开文件并加载到const char*。
一切都很好,直到c_str((
ifstream t("movie.mp4", ios::binary);
ostringstream file_string_o;
file_string_o << t.rdbuf();
string file_string = file_string_o.str();
当我使用 c_str(( 时,这是问题:
std::cout << file_string << std::endl;// output: QEQEQEQEQEQEQEQEQEQE� etc..
std::cout << file_string.c_str() << std::endl;//output ���
它只返回我的 3 个字节。为什么?
谢谢
这不是
c_str()
问题所在。
std::string::c_str(( 返回字符串表示的所有数据。
问题是 const char *
的重载operator <<
在遇到的第一个 0
字节处停止。换句话说,它operator <<
阻止您获取所有数据。
为了缓解这种情况,您可以使用这样的cout
:
std::cout.write(file_string.c_str(), file_string.size());
cout << std::endl;
write()
成员函数获取指向缓冲区的指针以及从该指针开始写入的字节数。
相关文章:
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- Python str to C++ to Python str
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 字符串变量,比如说"字符串str",可以直接复制到数组中吗?
- 解释一下 for (char c : str) 的作用?
- 返回 str vs. str.substr(0,str.size()) 在 leetcode 中给了我不同的输出
- remove(str.begin(), str.end(), );无法正常工作(我正在使用视觉工作室 2012)
- Getline(cin,str)的奇怪输出
- 比使用 s.str().c_str() 更好的表达?
- 除以 str.length() 什么也没显示
- 如何在C++中编写 ostream 的向量,它接收所有不同的输出流,如 cout、ostringstream 和 ofs
- 没有'str'成员在 GCC 和 Clang 'std::basic_ostream<char>',但 MSVC 没有问题
- 我可以得到一个字符 * 到一个 std::sregex_iterator 匹配 str() 吗?
- 如何将字符串类型转换为 ostringstream
- C6001:使用单元化内存"str[i]"
- C++ ostringstream.str().c_str()
- OSTRINGSTREAM,.STR(),并重置/清除流
- Visual Studio: "str() is not a member of std::ostringstream"
- 在提供核心转储的 ostringstream 对象上执行 .str().c_str() 操作