MinGW

时间:2016-07-25 08:58:41

标签: c++ qt mingw getline

我是C ++和Qt的初学者。目前,我正在研究一个Qt程序,我是从开源网站获得的。这是个人消费跟踪应用程序。当我尝试在Qt创建器中构建此项目时,出现错误:

C:\ Qt \已保存的项目\ Expense-Tracker-master \ dataRead.h:152:错误:未在此范围内声明'getline'      while((read = getline(& line,& 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){
                                                      ^

1 个答案:

答案 0 :(得分:0)

我找不到使用FILE *的标准函数getline。我认为您正在寻找的功能是fgets。如果你正在使用Qt,我想你是用C ++编写的。 FILE *属于C.您应该考虑使用C ++函数而不是C(参见fstreams)。