我正在尝试创建一个程序,用户可以在其中输入一系列球员姓名和得分并将其读回。但是,我在使用getline存储他们的输入时遇到了麻烦。在InputData函数的getline上,Visual Studio指出“错误:没有重载函数“getline”的实例与参数列表匹配,参数类型为:(std::istream,char)”,在==上表示“错误:操作数类型不兼容(“char”和“const char *”)”。这是我的代码:

#include <iostream>
#include <string>

using namespace std;

int InputData(string [], int [], int);
void DisplayPlayerData(string [], int [], int);

void main()
{
    string playerNames[100];
    int scores[100];

    int sizeOfArray = sizeof(scores);
    int sizeOfEachElement = sizeof(scores[0]);
    int numberOfElements = sizeOfArray / sizeOfEachElement;

    cout << numberOfElements;

    int numberEntered = InputData(playerNames, scores, numberOfElements);

    DisplayPlayerData(playerNames, scores, numberOfElements);

    cin.ignore();
    cin.get();
}

int InputData(string playerNames, int scores[], int size)
{
    int index;


    for (index = 0; index < size; index++)
    {
        cout << "Enter Player Name (Q to quit): ";
        getline(cin, playerNames[index]);
        if (playerNames[index] == "Q")
        {
            break;
        }
        cout << "Enter score: ";
        cin >> scores[index];
    }

    return index;
}

最佳答案

int InputData(string playerNames, int scores[], int size)
应该
int InputData(string playerNames[], int scores[], int size)
在您的代码中,您将playerNames作为字符串而不是字符串数组传递。

getline(cin, playerNames[index]);中,playerNames[index]是一个字符,因为playerNames是一个字符串。

09-08 11:37