将字符串转换为const char *(带二进制数据)

时间:2012-06-17 19:25:29

标签: 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 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 *?

1 个答案:

答案 0 :(得分:4)

这几乎可以肯定,因为您的二进制数据包含零值字节。这些与null-terminators相同,其函数如strlen用于确定字符串的结尾。

可以说任意二进制数据不应被视为字符串。因此,请改用std::vector<char>,不要使用strlen等函数。