【发布时间】:2013-11-29 11:45:14
【问题描述】:
我有一个字符串向量和一个自声明的 unsigned char 类型:
std::vector<std::string> result;
typedef unsigned char BYTE;
BYTE data[11];
我已经为结果赋值。现在我想将result的元素复制到data中:
for ( int i=0; i<11; i++)
{
data[i] = result[i];
}
但它给出了错误,说No suitable conversion function from std::string to BYTE exists。
我该如何处理?
更新:
首先,感谢大家宝贵的 cmets 和答案。
在我的代码中,我的 result 包含六个元素,例如这些值:
0x30
0x31
0x32
0x33
0x34
0x35
我尝试作为 Raxvan 的答案,但最后,data 仅捕获那些字符串元素的第一个值,即全零。我真正想要做的是让data 具有与result 相同的值,但属于BYTE 类型,因此类似于这样分配值:
BYTE data[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35 } // this line works correctly
【问题讨论】:
-
一般情况下是不可能的 - 因为你有未知数量的未知长度字符串,并尝试将它们全部放入一个固定长度的 11 字节数组中
-
将字符串(任意数量的字符)转换为单个字节是没有意义的。你到底想要
data数组中的什么? -
std::vector<std::string> result;实际上是一个二维字符数组,要获得单个字符,您必须编写result[i][j]。但是data是一维,这就是问题所在。所以可能解决方案是使result成为一维,或者使data成为二维。对此我无能为力,因为我没有更大的图景。 -
您的
BYTE是单个字符,并且您正在尝试存储一个二维数组。 -
确实如此,如果您完全放弃了向量/数组方面,并尝试仅将一个字符串分配给一个 BYTE,您会发现它也不起作用。然后如果你问我们为什么,我们会想,“他为什么要把整个字符串塞进一个字节?”。在这一点上,我们可能还想知道您是否意味着 BYTE 是指向 char 的指针,就像 C 倾向于处理字符串的方式一样,因为这实际上是可行的。
标签: c++ string char type-conversion