ifstream get string的字符串进入数组

ifstream getline of string into Array?

本文关键字:数组 字符串 get string ifstream      更新时间:2023-10-16

我正在尝试使用此功能

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表示标记。该循环工作正常,但是当它到达名字和姓氏之间的空间时,该程序似乎仅将一个名称写入数组中。我尝试使用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]);