【问题标题】:Compare 2 Dimensional int array with string array C++将二维 int 数组与字符串数组 C++ 进行比较
【发布时间】:2014-04-17 02:42:43
【问题描述】:
#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] 进行比较,这样我就可以根据它是 == 还是 != 来检查它的不同格式

我的问题是 grid 是一个 int 而 key 是一个字符串。对于 if else 操作数,您将如何比较这两者?

【问题讨论】:

    标签: c++ arrays int


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      grid 是一个二维数组,所以if(grid[i] == key[i]) 是错误的。改为if(grid[j][i] == (key[i]) - '0')

      grid[i]表示grid[i][0] (&amp;grid[i][0]的地址,所以比较不合理。

      key[i]是char类型,atoi需要参数为const char *,所以使用atoi不正确。通过 ascii 值比较 charint 是最有效的方法。 key[i] - '0' 将一个数字从 char 转换为 int 值。

      【讨论】:

      • 当我执行 atoi(key[i])) 时,它说 char 类型与 const char 不兼容
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      • 2016-10-17
      • 1970-01-01
      • 2016-01-08
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多