我的代码出了什么问题?我该如何解决? C ++

时间:2011-11-10 09:18:05

标签: c++

    #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

3 个答案:

答案 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]是一个字符串,因为rowvector的{​​{1}}。如果您希望stringsrowstringrow[pos],请将行声明为字符串。或许你的意思是将行作为char的向量。

答案 2 :(得分:2)

最后一个if语句的问题是row[pos]的类型为string。所以你不能从中减去49。你想要的是字符串的第一个字符:

if(row[pos][0] - 49 == 0)

这样做可以说更具可读性:

if(row[pos][0] - '1' == 0)
相关问题