gpt4 book ai didi

c++ - 将字符串转换为 const char*(使用二进制数据)

转载 作者:行者123 更新时间:2023-11-27 23:23:36 27 4
gpt4 key购买 nike

我想做的是将字符串转换为 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”。

使用 myString.c_str() 将字符串转换为 const char* 时,显然会丢失一些数据!

如何在不丢失二进制数据的情况下将字符串转换为 const char*?!

最佳答案

这几乎可以肯定是因为您的二进制数据包含零值字节。这些与空终止符相同,其功能类似于 strlen用于确定字符串的结尾。

是否应将任意二进制数据视为字符串是有争议的。所以使用 std::vector<char>相反,不要使用像 strlen 这样的函数.

关于c++ - 将字符串转换为 const char*(使用二进制数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11074150/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com