我想要做的是将字符串转换为const char *。
理想情况下,我可以使用“const char * myConstChar = myString.c_str()”,但我的示例如下所示;它不适用于二进制数据:
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main(){
string myString; // This need to be string
ifstream infile;
const char* myConstChar; // This need to be const char*
infile.open("binary.bin");
if(infile){
while(getline(infile, myString)){
std::cout << "Data: " << myString << " string length: ";
std::cout << myString.length() << "\n";
myConstChar = myString.c_str();
std::cout << "const char Data: " << myConstChar;
std::cout << " const char length: "<< strlen(myConstChar) <<"\n";
}
}
infile.close();
return 0;
}
返回“string length:13”和“const char length:3”。
使用const char*
将字符串转换为myString.c_str()
时,显然会丢失一些数据!
如何在不丢失二进制数据的情况下将字符串转换为const char *?
答案 0 :(得分:4)
这几乎可以肯定,因为您的二进制数据包含零值字节。这些与null-terminators相同,其函数如strlen
用于确定字符串的结尾。
可以说任意二进制数据不应被视为字符串。因此,请改用std::vector<char>
,不要使用strlen
等函数。