C++ 将字符串转换为常量字符*(使用二进制数据)
我要做的是将字符串转换为const char* 理想情况下,我可以使用“const char*myConstChar=myString.c_str()”,但正如下面的示例所示;它对二进制数据不起作用:C++ 将字符串转换为常量字符*(使用二进制数据),c++,binary,C++,Binary,我要做的是将字符串转换为const char* 理想情况下,我可以使用“const char*myConstChar=myString.c_str()”,但正如下面的示例所示;它对二进制数据不起作用: #include <iostream> #include <fstream> #include <stdio.h> #include <string.h> using namespace std; int main(){ string m
#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;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main(){
string myString;//这必须是string
河流充填;
const char*myConstChar;//这必须是const char*
infile.open(“binary.bin”);
如果(填充){
while(getline(infle,myString)){
std::cout这几乎可以肯定,因为二进制数据包含零值字节。这些字节与空终止符相同,空终止符的功能类似于strlen
用于确定字符串的结尾
任意二进制数据不应被视为字符串是有争议的。因此,请改用std::vector
,并且不要使用类似于strlen
的函数。这几乎可以肯定,因为二进制数据包含零值字节。这与空终止符相同,类似于strlen
的函数用于确定在一根绳子的末端挖矿
任意二进制数据不应被视为字符串是有争议的。因此,请改用std::vector
,并且不要使用类似strlen
的函数。为什么要使用字符串读取二进制数据?我建议您切换到std::vector
。这是一个怎样的问题?o.您为什么要使用字符串读取二进制数据?我建议您可以切换到std::vector
。这是一个怎样的问题?o.OOr,只需将它保存在std::字符串中,并将c_str()与length()组合使用即可要访问内容!好的,示例中有几个零值字节:hextdump-C./binary.bin 00000000 03 01 6a 00 07 56 52 03 30 00 01 01。那么是否可以将其转换为const char*呢?std::vector的问题是,最终我希望将数据转换为可读内容。我使用的自定义库只接受const char*作为参数。因此,我最终需要将vector转换为const char*。“我想将数据转换为可读内容”。二进制数据和字符串之间不可能进行转换。使用二进制所能做的就是以十六进制格式或类似的格式打印它们。@user1432032:是的;您的代码已经获得了有效的const char*
。问题是您不能将其视为字符串,因为它不是字符串。或者,只需将其保存在std::string中,然后将c_str()与length()结合使用要访问内容!好的,示例中有几个零值字节:hextdump-C./binary.bin 00000000 03 01 6a 00 07 56 52 03 30 00 01 01。那么是否可以将其转换为const char*呢?std::vector的问题是,最终我希望将数据转换为可读内容。我使用的自定义库只接受const char*作为参数。因此,我最终需要将vector转换为const char*。“我想将数据转换为可读内容”。二进制数据和字符串之间不可能进行转换。使用二进制所能做的就是以十六进制格式或类似的格式打印它们。@user1432032:是的;您的代码已经获得了有效的常量char*
。问题是您不能将其视为字符串,因为它不是字符串。