getline c ++的问题

时间:2017-04-27 01:33:35

标签: c++14 getline

我一直在寻找几个小时,但还没有遇到我的问题。我正在从文件中读取第一行将是电影的数量,之后的行将是电影片名,导演等。

示例:

2
Friday Night Lights: Upcoming;Bond, James;2061;128;93000000;871530324
Friday Night Lights: Upcoming;Bond, James;2061;128;93000000;871530324

但我似乎无法使getline功能正常工作。我尝试了几种不同的方式,但它只是不起作用。

struct MovieData{
string movieTitle;
string director;
int yearReleased;
double runningTime;
double costOfProduction;
double revenueGenerated;
double profitOrLoss;
};
void storingMovieData(ifstream file, MovieData array[], int numberOfMovies);

int main(){
    char fileName[50];
    MovieData array[];
    cout << "Enter file name: ";
    cin.getline(fileName, 50);
    int numberOfMovies;
    ifstream file(fileName);
    file >> numberOfMovies;
    storingMovieData(file, array, numberOfMovies)

    file.close();

    return 0;
}

void storingMovieData(ifstream file, MovieData array[], int numberOfMovies){
    for(int i = 0; i < numberOfMovies; i++){
    getline(file, array[i].movieTitle, ';');
    getline(file, array[i].director, ';');
    getline(file, array[i].yearReleased, ';');
    getline(file, array[i].runningTime, ';');
    getline(file, array[i].costOfProduction, ';');
    getline(file, array[i].revenueGenerated, ';');
    getline(file, array[i].profitOrLoss, ';');
   }
}

非常感谢任何有关我的问题的帮助!

1 个答案:

答案 0 :(得分:0)

这些是您问题的根源:

int yearReleased;
double runningTime;
double costOfProduction;
double revenueGenerated;
double profitOrLoss;

getline()不接受double / int。

您可能想要读入一些临时字符串,然后在转换为double后分配给struct。