我有一个函数,它接收一个指向一个字符串的指针,该字符串的名称为file to open,并用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();
}
答案 0 :(得分:1)
写入二进制文件后,我有完全相同的......
我想你想将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
。但是可以使用operator>>()
和std::istringstream
来填充它。