试图结合字符串的两个元素给我错误的结果(c ++)

时间:2015-02-13 23:25:59

标签: c++ arrays string char

我有一个代码,我将文本文件读入字符串。该字符串称为“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 *'的无效转换。

1 个答案:

答案 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],但这不起作用,因为与数字一样,它会再次计算。)