C++ C++;,将包含二进制的字符串存储到文本文件中

C++ C++;,将包含二进制的字符串存储到文本文件中,c++,binaryfiles,fstream,ofstream,huffman-code,C++,Binaryfiles,Fstream,Ofstream,Huffman Code,我目前正试图存储一个包含二进制代码的字符串 当我尝试将此字符串写入文本文件时,它只是以字符串格式存储每个0和1字符,而不是按照我的要求将其存储到8位块中。这会导致文件比预期的大,因为它使用8位来存储每个0和1 我应该将字符串写入.bin文件而不是.txt文件吗? 如果是这样的话,我将如何着手做这件事,如果可能的话,我将举一个示例,其中包含一些工作代码 谢谢你事先给我的建议 string encoded = "01010101"; ofstream myfile;

我目前正试图存储一个包含二进制代码的字符串

当我尝试将此字符串写入文本文件时,它只是以字符串格式存储每个0和1字符,而不是按照我的要求将其存储到8位块中。这会导致文件比预期的大,因为它使用8位来存储每个0和1

我应该将字符串写入.bin文件而不是.txt文件吗? 如果是这样的话,我将如何着手做这件事,如果可能的话,我将举一个示例,其中包含一些工作代码

谢谢你事先给我的建议

   string encoded = "01010101";    
   ofstream myfile;   
   myfile.open ("encoded");   
   myfile <<  encoded;   
   myfile.close();   
string encoded=“01010101”;
流文件;
myfile.open(“编码”);

myfile我只是猜测,因为您没有显示任何代码,但似乎您有一个包含字符
'1'
'0'
的字符串。如果你把它写进一个文件,它当然是一个文本。你需要先把它转换成整数

有关将任意基字符串转换为整数的函数,请参见或

我应该将字符串写入.bin文件而不是.txt文件吗

如果你愿意的话。。。但这也没什么区别<流的code>不关心文件名。只需将字符串转换为一个字节(
uint8\t
),然后将该字节写入文件:

string s = "10101010";
uint8_t byte = strtoul(s.c_str(), NULL, 2);
myfile << byte;
string s=“10101010”;
uint8_t byte=strtoul(s.c_str(),NULL,2);
myfile可以将字符串转换为整数

std::bitset<8> bits("01010101");
cout << bits.to_ullong();
std::位集位(“01010101”);

你能有一个很好的理由把二进制数据存储在字符串中吗?无法使用用于存储二进制数据的内容?我正在尝试存储通过使用哈夫曼树对文本进行编码而产生的二进制数据。我遇到的问题是以8位压缩的方式将二进制文件写入文件。像这样吗<代码>字符串测试=“01010101”;uint8_t byte=strtoul(test.c_str());流myfile3;myfile3.open(“binary.txt”);myfile3@user2202417是的,除了我不小心漏掉了
strtoul
的两个参数。请参见编辑。