我有一个代码,我将文本文件读入字符串。该字符串称为“line”。现在我取行“line [0]”的第一个元素是3,行“line [1]”的第二个元素是8.我想将它们组合成一个名为ary [0]的数组。
我所做的是ary[0] = line[0] + line[1]
并且预计得到“38”,但相反,我得到了“107”。
为什么line[0] + line[1]
不起作用?将两种元素结合起来的正确方法是什么?我试过了strcat(line[0],line[1])
但是我收到了一条错误:从'char'到'char *'的无效转换。
答案 0 :(得分:0)
第一个元素是'3'
(数字3的ASCII字符),而不是3
(数值)。您需要将ASCII字符转换为数字值,而且,您不能只是添加它们来获取值,您需要使用它们与数字一起计算,即。将第一个乘以10得到30:
ary[0] = (line[0] - '0') * 10 + (line[1] - '0');
或者,如果您想将它们保留为字符串,则需要将ary
定义为std::string
的向量并使用substr
:
ary[0] = line.substr(0, 2);
(注意:最初我建议使用line[0] + line[1]
,但这不起作用,因为与数字一样,它会再次计算。)