2017-04-27 90 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