我想要做的是将字符串转换为 const char*。
\n\n理想情况下,我可以只使用“const char* myConstChar = myString.c_str()”,但如下面的示例所示;它不适用于二进制数据:
\n\n#include <iostream>\n#include <fstream>\n#include <stdio.h>\n#include <string.h>\n\nusing namespace std;\n\nint main(){\n string myString; // This need to be string\n ifstream infile;\nconst char* myConstChar; // This need to be const char*\n\ninfile.open("binary.bin");\n\nif(infile){\n while(getline(infile, myString)){ \n std::cout << "Data: " << myString << " string length: "; \n std::cout << myString.length() << "\\n";\n myConstChar = myString.c_str();\n std::cout << "const char Data: " << myConstChar; \n std::cout << " const char length: "<< strlen(myConstChar) <<"\\n";\n }\n }\n\n infile.close();\n return 0;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n这将返回“字符串长度:13”和“const char 长度:3”。
\n\nconst char*显然,将字符串转换为使用时会丢失一些数据myString.c_str()!
如何将字符串转换为 const char* 而不丢失二进制数据?!
\n这几乎可以肯定是因为您的二进制数据包含零值字节。它们与空终止符相同,其功能类似于strlen用于确定字符串的结尾。
任意二进制数据不应该被视为字符串是有争议的。因此请使用std::vector<char>,并且不要使用诸如strlen.
| 归档时间: |
|
| 查看次数: |
1629 次 |
| 最近记录: |