无法将1和0的字符串写入二进制文件C
作者:互联网
我有一个函数,该函数接收一个指向带有文件名的字符串的指针以打开并以1和0进行编码;
codedLine包含类似010100110101110101010011的内容
写入二进制文件后,我完全一样…您会推荐吗?谢谢.
void codeFile(char *s)
{
char *buf = new char[maxStringLength];
std::ifstream fileToCode(s);
std::ofstream codedFile("codedFile.txt", std::ios::binary);
if (!fileToCode.is_open())
return;
while (fileToCode.getline(buf, maxStringLength))
{
std::string codedLine = codeLine(buf);
codedFile.write(codedLine.c_str(), codedLine.size());
}
codedFile.close();
fileToCode.close();
}
解决方法:
After writing to binary file I have exactly the same…
我想您想将std :: string输入转换为其等效的二进制文件.
您可以使用std::bitset<>
类将字符串转换为二进制值,反之亦然.将字符串直接写入文件会导致字符值“ 0”和“ 1”的二进制表示.
一个示例如何使用它:
std::string zeroes_and_ones = "1011100001111010010";
// Define a bitset that can hold sizeof(unsigned long) bits
std::bitset<sizeof(unsigned long) * 8> bits(zeroes_and_ones);
unsigned long binary_value = bits.to_ulong();
// write the binary value to file
codedFile.write((const char*)&binary_value, sizeof(unsigned long));
注意
上面的示例符合c++11标准.对于早期版本,无法直接从字符串初始化std :: bitset.但是它可以使用运算符>>()和std :: istringstream填充.
标签:c,binary,c++11 来源: https://codeday.me/bug/20191012/1900743.html