如何在C++中将字符串转换为无符号字符数组

4
string temp;
temp = line.substr(0, pos);

我需要将字符串temp转换为无符号字符数组。 请问有人能告诉我如何做到这一点吗? 我尝试了下面链接中提到的方法,但它们没有起作用。 如何在Visual C++中将字符串文字转换为无符号字符数组
unsigned char* val=new[temp.size() + 1](); //Error: Expected a type.
copy(temp.begin(), temp.end(), val);

如果您只需要访问底层的char数组,可以使用.c_str(),但这并不能保证无符号。为什么那个问题中的方法对您无效? - Ryan Haining
1
您确定要一个 unsigned char 数组,而不仅仅是一个 unsigned char 吗? - chris
你到底想从这个“转换”中得到什么?如果字符串是“abcde”,结果应该是什么? - T.C.
抱歉,我刚刚编辑了描述。 - aries
1个回答

10

在一个未加工的无符号字符缓冲区中放置一个字符串是不美观的,你不应该这样做,但这是堆栈溢出,我们必须回答。

unsigned char *val=new unsigned char[temp.length()+1];
strcpy((char *)val,temp.c_str());

为什么它看起来这么丑?你能告诉我更好的方法吗?我有一个 Vector<uchar> 类型的颜色。我通过读取文件获取字符串。我需要将这些字符串插入到 “colors” 中,请告诉我是否有更简洁的方法来实现这个目标。 - aries
@aries 把字符串放在无符号字符数组中是很丑陋的。你应该使用std::vector。答案还可以,但你的问题暗示着你想做一些不好的事情。(但你没有说清楚) - Martin Schlott
@aries 使用我提供的代码使其运行。然后提出一个新问题,询问如何更好地完成它。你在评论中提出的问题超出了评论应该提供的范围。它应该是问题的一部分(附带更多的代码)。 - Martin Schlott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接