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.get
和 fin.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]);
我正在尝试使用这个功能
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.get
和 fin.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]);