我不知道为什么会有这个奇怪的问题。我有一个字符串,可以说包含值'a1a2'
问题是,如果我尝试保存第二个字母(1),则它不起作用,它将向我打印另一个数字。 这是我的代码:
cout << "msg is " << msg[1] << endl; // msg[1] has the value: 1
int cX = (int)(msg[0] - 'a'); // works good
int cY = (int)msg[1]; // I get different value than 1 for some reason ..
int tX = (int)(msg[2] - 'a'); // works good
int tY = msg[3]; // same problem
cout << "\ncY is " << cY << endl; // prints me other number
感谢您的帮助
答案 0 :(得分:2)
msg[1]
不是整数1
的 。这是字符'1'
。当您将其强制转换为整数时,就像在cY
行中所做的那样,您将获得其基础表示形式,该表示形式可能是(但不一定是)ASCII码49。如果要将数字转换为整数,您将使用与字母相同的技巧。
int cY = (int)(msg[1] - '0');