保存一个未签名的char矢量
Save an unsigned char vector one by one
#include "stdafx.h"
#include "Compiler.h"
#include <fstream>
int main() {
std::ofstream output("file.bin", std::ios::binary | std::ios::trunc);
if(output.fail()) {
return 1;
}
std::vector<unsigned char> f = Runtime::convert_line_to_instructions("rt_reg str Hello");
for(unsigned char i : f) {
//output.write(reinterpret_cast<char*>&i, sizeof(unsigned short)); doesn't work here.
}
std::cerr << "Program Compiled!" << std::endl;
while(true);
return 0;
}
如何将未签名的char矢量保存到文件?我已经尝试了几种解决方案(包括评论的解决方案),但它们都没有起作用。
*convert_line_to_instructions也返回一个无符号的char向量。
使用 output.put(i);
,因为它一次带一个字符。
但是您真的想跳过for-loop,然后写一篇文字写整个矢量:
output.write(f.data(), f.size());
这是一个Fstream,因此您可以使用iostream运算符,例如<<
。
#include <fstream>
#include <iostream>
#include <vector>
int main(const int argc, const char* argv[]) {
std::ofstream output{"file.bin", std::ios::binary | std::ios::trunc};
if (output.fail())
return 1;
std::vector<unsigned char> input = {'r', 't', '_', 'r', 'e', 'g', ' ',
's', 't', 'r', ' ', 'H', 'e', 'l',
'l', 'o'};
for (const auto i : input)
output << i;
return 0;
}
一种稍微清洁的方法是使用迭代器使用STL算法:
std::copy(begin(input), end(input), std::ostreambuf_iterator<char>(output));
ostreambuf_iterator<char>
轻巧,缓冲,并且没有格式化。
相关文章:
- 打印标准::<char>不带无关字符的矢量
- 将.txt文件存储到 char* 2d 矢量C++中
- 哪一个更适合存储字符、矢量<char>或字符串?
- 如何在矢量中显示特定项目<char>?(C++)
- 将 char* 推送到矢量时出现问题,但在每次迭代后,它会将指向相同值缓冲区的指针添加到矢量中
- C++将结构强制转换为 std::矢量<char>内存对齐
- 保存一个未签名的char矢量
- 如何将bitset分配给未签名的char矢量
- 分类char矢量
- 将矢量<char>复制到 2D 矢量 <string> c++
- 将char阵列向量施加到POD矢量
- 字符串流到矢量<char>抛出 std::bad_alloc
- 将矢量<char>转换为常量字符* 和字符串
- 如何将char的矢量转换为字符串流
- 矢量<char>优于字符串的好处?
- 矢量<string>还是矢量<矢量<char>>?
- 如何使用<char>分度将矢量拆分为字符串
- 如何从矢量中删除元素<char>?
- C++字符串与矢量<char>
- 将标准::字符串转换为标准::矢量<char>