ifstream getline of string into Array?

时间:2015-05-08 12:22:58

标签: c++ fstream ifstream getline

我试图使用此功能

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之间的空间时,程序似乎只将FirstName写入数组。我尝试使用fin.getfin.getline()但我收到此错误:

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

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

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

答案 1 :(得分:1)

&lt; p&gt;&lt; a href =“http://en.cppreference.com/w/cpp/io/basic_istream/getline”rel =“nofollow”&gt;&lt; code&gt; std :: basic_istream :: getline&lt; /代码&GT;&LT; / A&GT;不接受&lt; code&gt; std :: string&lt; / code&gt;。&lt; / p&gt; &lt; p&gt;&lt; a href =“http://en.cppreference.com/w/cpp/string/basic_string/getline”rel =“nofollow”&gt;&lt; code&gt; std :: getline&lt; / code&gt;&lt; ; / A&GT;是你想要与&lt; code&gt; std :: string&lt; / code&gt;一起使用的。由于它是非成员函数模板,因此将输入流作为第一个参数并将输出字符串作为第二个参数调用它:&lt; / p&gt; &lt; pre&gt;&lt; code&gt; std :: getline(fin,names [i]); &LT; /代码&GT;&LT; /预&GT;