将2维int数组与字符串数组C ++进行比较

时间:2014-04-17 02:42:44

标签: c++ arrays int

#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <iomanip>
#include <string>

using namespace std;

void main(){

int numstud=0, numcorrect, i, j, grid[20][5]={0}, x;
string key, id, responses;
ifstream keyfin, studfin;
keyfin.open("answers.dat");
studfin.open("tests.dat");

keyfin >> key;
studfin >> id >> responses;

cout << setw(5) << "Student-Id's" << setw(20) << "# Correct" << endl << endl;

while(!studfin.eof())
{
    numstud++;
    numcorrect=0;
    for(i=0; i<20; i++){

        if(responses[i] == key[i])
        {
            numcorrect++;
        }
        if(responses[i] == 'A')
            grid[i][0]++;
        else if(responses[i] == 'B')
            grid[i][1]++;
        else if(responses[i] == 'C')
            grid[i][2]++;
        else if(responses[i] == 'D')
            grid[i][3]++;
        else 
            grid[i][4]++;
        }

    cout << id << setw(20) <<numcorrect << endl;
    studfin >> id >> responses;






}


    cout << endl << endl << endl << endl;
    cout << "Questions" << setw(16) << "A" << setw(5) << "B" << setw(5) << "C" << setw(5) << "D" << setw(5) << "E" << endl; 

    for(j=0; j<20; j++){


        cout << endl << setw(5) << j+1 << setw(20);

        for(i=0; i<5; i++)

        if(grid[i] == key[i])
            cout << grid[j][i] << "*" << setw(5);
        else
            cout << grid[j][i] << " " << setw(5);

    }
    cout << endl;
    system("Pause"); 

}

这是一个非常简单的问题,希望是一个非常简单的答案,我需要将grid [i]与key [i]进行比较,以便我可以检查格式是否有所不同,具体取决于它是否==或!=

我的问题是网格是一个int而key是一个字符串。您如何比较这两个if else操作数?

2 个答案:

答案 0 :(得分:0)

使用string

int转换为std::stoi()
if(grid[i] == stoi(key[i]))

答案 1 :(得分:0)

grid是一个2D数组,因此if(grid[i] == key[i])是错误的。更改为if(grid[j][i] == (key[i]) - '0')

grid[i]表示grid[i][0] (&grid[i][0]的地址,因此比较它们是不合理的。

key[i]是char类型,atoi需要参数为const char *,因此使用atoi 不正确。通过ascii值在charint之间进行比较是最有效的方法。 key[i] - '0'charint值的数字投射出来。