2017-04-27 59 views
0

我一直在寻找几个小时,但尚未遇到我的问题。我从一个文件中的第一行中读取数据是电影的数量后,该线将是电影片名,导演等问题与getline C++

例子:

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, ';'); 
    } 
} 

我的问题的任何帮助,将不胜感激!

+0

调用'istream :: getline'后'failbit'的值是多少?你使用了一个逐步调试器吗? – Dai

回答

0

这些是你的问题的根源:

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

getline()不接受双/ INT。

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

+1

谢谢。不知道,但现在我知道了! – Austin