2016-07-25 20 views
2

私はC++とQtの両方の初心者です。現在、私はオープンソースのWebサイトから入手したQtプログラムを勉強しています。それは個人的な経費トラックアプリです。 Qt作成者でこのプロジェクトをビルドしようとすると、エラーが表示されます。MinGWでQt getlineエラー

C:\ Qt \ Saved project \ Expense-Tracker-master \ dataRead.h:152:エラー: 'getline'が宣言されていませんこのスコープは 中(!(= getlineの(&ライン、& LEN、labelFile))を読ん= -1){ ^

ここで下は、関連するコードです:

std::vector<std::string> * readLabel(const char* labelToRead){ 
std::vector<std::string> * labels = new std::vector<std::string>; 
FILE * labelFile = fopen(labelToRead, "r"); 
if(labelFile == NULL) std::cout<<labelToRead<<std::endl; 
//TODO -- throw if failure 
char * line = NULL; 
size_t len = 0; 
ssize_t read; 
while((read = getline(&line, &len, labelFile)) != -1){ 
    std::string temp(line); 
    std::string label(temp.begin(), temp.end()-1); 
    labels->push_back(label); 
} 
free(line); 
fclose(labelFile); 
return labels;} 

私はグーグルで検索し、 getline()とMinGWコンパイラの間に何かが間違っているようです。誰かが私にこれを助けてくれましたか?

さらに、私はすでに文字列ヘッダを含んでいます。私は「のstd :: getlineの」を入れたとき、それは別のエラーを示しています

C:\Qt\Saved project\Expense-Tracker-master\dataRead.h:152: error: no matching function for call to 'getline(char**, size_t*, FILE*&)' 
    while((read = std::getline(&line, &len, labelFile)) != -1){ 
                ^
+0

オフトピック - C言語で 'ifstream'、' ofstream'と 'fstream'を使うべきです(C' FILE *ではなく)。 – Xiobiq

答えて

0

私は* FILEでの作業の標準機能getlineを見つけることができません。あなたが探している機能はfgetsだと思います。 Qtを使用しているなら、C++でコーディングしていると思います。 FILE *はCに属します。Cの代わりにC++関数を使用することを検討してください(fstreamsを参照)。

関連する問題