我正在尝试读取文本文件中的一部分行。 文本文件包含电影的数量,奖励的数量,电影被提名的次数以及电影名称。文本文件如下所示:
2
1935 1 3
The Dark Angel
1935 4 6
The Informer
我尝试使用getline()函数,但是当我编译它时,只有垃圾值。
这是我写的代码
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream infile;
int numofmovies;
infile.open("old_movies.txt");
infile >> numofmovies;
int numawards[numofmovies], nomination[numofmovies], year[numofmovies];
string moviename[numofmovies];
for (int i = 0 ; i < numofmovies ; i++)
{
infile >> year[i] >> numawards[i] >> nomination[i];
getline(infile, moviename[i]);
cout <<moviename[i]<< endl;
}
return 0;
}
答案 0 :(得分:2)
这无法编译:
int numawards[numofmovies], nomination[numofmovies], year[numofmovies];
numofmovies
不是常量编译时值,因此您不能使用它来声明这样的数组。你应该使用vector。
std::vector<int> numawards(numofmovies);
std::vector<int> nomination(numofmovies);
std::vector<int> year(numofmovies);
std::vector<std::string> moviename(numofmovies);
顺便说一句,为什么不这样声明类型Movie
:
struct Movie
{
std::string name;
int numawards;
int nominations;
int year;
}
然后用它来读取你的数据:
std::vector<Movie> movies(numofmovies);
for (int i = 0 ; i < numofmovies ; i++)
{
infile >> movies[i].year >> movies[i].numawards >> movies[i].nomination;
getline(infile, movies[i].moviename);
cout <<movies[i].moviename<< endl;
}