私は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){
^
オフトピック - C言語で 'ifstream'、' ofstream'と 'fstream'を使うべきです(C' FILE *ではなく)。 – Xiobiq