gpt4 book ai didi

C++:如何将字符串 vector 元素转换为无符号字符?

转载 作者:太空宇宙 更新时间:2023-11-04 15:20:39 42 4
gpt4 key购买 nike

我有一个字符串 vector 和一个自声明类型的 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];
}

但它给出了错误,说不存在从 std::string 到 BYTE 的合适的转换函数

我该如何处理?

更新:

首先感谢大家宝贵的意见和回答。在我的代码中,我的 result 包含六个元素,例如这些值:

0x30
0x31
0x32
0x33
0x34
0x35

我试过Raxvan的答案,但最后,data只捕获了那些字符串元素的第一个值,即全零。我其实想做的是让dataresult有相同的值,但是是BYTE类型,这样就类似于赋值像这样的值:

BYTE data[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35 } // this line works correctly

最佳答案

你混淆了你的类型。

data 是一个 BYTE 数组(所以基本上可以容纳 11 个字符),但是 result 是一个 string 数组(这意味着它可以包含多个 strings,每个字符串包含多个字符)。

因此,根据您的实际需要,您可以做两件事:

如果需要将所有的字符串都转换成BYTE数组,那么创建一个BYTE数组的数组:

// adapt sizes to your needs
size_t const MaxStrSize = 11; // allows to hold 10 characters (+ 0 delimiter)
size_t const MaxStrCount = 11;
BYTE data[MaxStrCount][MaxStrSize];

for (int j=0; j<MaxStrCount && j<result.size(); ++j)
{
for ( int i=0; i<MaxStrSize && i<result[i].length(); i++)
{
data[j][i] = result[j][i];
}
}

否则,如果您只想访问 vector 中包含的一个字符串(例如第一个):请参阅 Raxvan's answer .

关于C++:如何将字符串 vector 元素转换为无符号字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20285034/

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