ifstream 将字符串的行转换为数组?

ifstream getline of string into Array?

我正在尝试使用这个功能

int input(int marks[classMax][3], string names[classMax], float& avg)
{
    for (int i = 0; i < students; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            fin >> marks[i][j];
        }
        fin >> names[i];
    }
}

将带有学生姓名的标记列表放入两个数组中。名单如下: M1 M2 M3 FirstName LastName,其中 M 表示马克。 循环工作正常,但是当它到达 First 和 Last Name 之间的 space 时,程序似乎只将 FirstName 写入数组。我尝试使用 fin.getfin.getline() 但出现此错误:

error: no matching function for call to 'std::basic_ifstream<char>::get(std::strings&, int)'

你可以试试这个:

int input(int marks[classMax][3], string names[classMax], float& avg)
{
    for (int i = 0; i<students; i++)
    {
        for (int j = 0; j<3; j++)
        {
            fin >> marks[i][j];
        }
        std::getline(fin, names[i]);
    }
}

有关详细信息,请查看 cppreference

std::basic_istream::getline不带std::string.

std::getline 是您要与 std::string 一起使用的内容。因为它是一个非成员函数模板,所以调用它时将输入流作为第一个参数,将输出字符串作为第二个参数:

std::getline(fin, names[i]);