这是我的代码
bool saveFile (string name, string contents)
{
ofstream file;
file.open(name.c_str(), ios::binary);
file.write(contents.c_str(),contents.size());
file.close();
}
确定编辑:
我的字符串包含
10100101111111110000
当我将其保存为二进制文件并使用记事本打开时,我希望看到 ascii 表中的随机字符,但我看到的是完全相同的 0 和 1 流
最佳答案
如果您有一个“二进制”文本字符串 '1'
和'0'
字符,您可以使用 std::bitset<8>
将其编码为字节.
void saveFile (std::string name, std::string contents) {
std::ofstream file(name.c_str(), std::ios::binary);
for ( std::size_t byte = 0; byte < contents.size(); byte += 8 ) {
file.put( std::bitset< 8 >( contents, byte, // convert one byte
std::min( (std::size_t) 8, contents.size() - byte ) // or as many bits as are left
.to_ulong() ); // to two's complement representation
}
}
关于c++ - 如何将字符串保存为二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17131902/