gpt4 book ai didi

c++ - 将 char 数组转换为字符串时的数据丢失

转载 作者:行者123 更新时间:2023-11-28 01:32:08 25 4
gpt4 key购买 nike

我使用两种不同的方式将 char array 转换为 string 但它们都返回 4 作为字符串的 length 而 char 大小是 16:

char chr[16] = { 0x0E,0x1F,0xBA,0x0E,0x00,0xB4,0x09,0xCD,0x21,0xB8,0x01,0x4C,0xCD,0x21,0x57,0x69 };

const string str(chr); // First try
string str2 = static_cast<string>(chr); // Second try

cout << sizeof chr << endl; // size of the char
cout << "Converted: " << str << " Size: " << str.length() << endl; // length of converted char
cout << "Converted: " << str2 << " Size: " << str2.length() << endl; // length of converted char

数据丢失的原因是什么?修复方法是什么?

最佳答案

\0 被视为终止字符串并且在

char chr[16] = { 0x0E,0x1F,0xBA,0x0E,0x00,0xB4,0x09,0xCD,0x21,0xB8,0x01,0x4C,0xCD,0x21,0x57,0x69 };

您的第五个字符是 \0

因此字符串仅由前 4 个字符组成。

您可以使用可以指定大小的字符串中的构造函数来修复它。将 const string str(chr); 替换为 const string str(chr, 16);

还有 0xB40xCD0xB8 不适合字符,因为它们大于 128

关于c++ - 将 char 数组转换为字符串时的数据丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51058608/

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