#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<string> row(7, "0");
char input;
int pos;
cin >> input;
cin >> pos;
if(input == 'X')
row[pos] = '1';
//ascii value of 1 is 49
if(row[pos] - 49 == 0)
cout << "Correct";
return 0;
}
我在上一篇if
声明中一直收到错误消息。任何想法为什么它不工作,以及我如何解决它?顺便说一句,row
有是一个字符串向量,我不能使它成为任何其他类型。
我希望row[pos]
将row
中的角色带到位置pos
答案 0 :(得分:4)
你不能减去整数和字符串。
使用字符并转换为int:
char ch = row[pos][0];
int asciiCode = (int)ch;
if (asciiCode == 49) {
cout << "Correct";
}
答案 1 :(得分:3)
我猜你要比较案件的第一个字母,在这种情况下你有两个选择:
if(row[pos][0] - 49 == 0)
cout << "Correct";
或
if(*row[pos].c_str() - 49 == 0)
cout << "Correct";
尝试从int
中减去std::string
是违法的。
row[pos]
是一个字符串,因为row
是vector
的{{1}}。如果您希望strings
为row
而string
为row[pos]
,请将行声明为字符串。或许你的意思是将行作为char
的向量。
答案 2 :(得分:2)
最后一个if语句的问题是row[pos]
的类型为string
。所以你不能从中减去49。你想要的是字符串的第一个字符:
if(row[pos][0] - 49 == 0)
这样做可以说更具可读性:
if(row[pos][0] - '1' == 0)