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

Compare 2 Dimensional int array with string array C++

本文关键字:数组 字符串 C++ 比较 int 二维      更新时间:2023-10-16
#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("answerswers.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,键是一个字符串。对于if else操作数,您将如何比较这两者?

使用std::stoi():将string转换为int

if(grid[i] == stoi(key[i]))

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

grid[i]意味着grid[i][0] (&grid[i][0]的地址,所以将它们进行比较是不合理的。

key[i]是一个字符类型,atoi需要参数为const char *,因此使用atoi是不正确的。用ascii值比较CCD_ 15和CCD_。CCD_ 17将数字从CCD_ 18强制转换为CCD_ 19值。