C ++使用getline逐行读取

时间:2017-12-03 17:19:53

标签: c++ stream

我想逐行读取文件

    void BookRepository::PopulateEntity(Book * book, std::ifstream * inputfileStream)
    {
        getline(inputfileStream, book->Id);
getline(inputfileStream,book->Name);
}

这样的东西......但我收到了一些编译错误,我不知道为什么

  

错误C2784' std :: basic_istream< _Elem,_Traits>   &安培;的std ::函数getline(标准:: basic_istream< _Elem,_Traits>   &安培;,的std :: basic_string的< _Elem,_Traits,_Alloc> &)':无法演绎   ' std :: basic_istream< _Elem,_Traits>的模板参数&安培;'从   '的std :: ifstream的'

     

错误C2784' std :: basic_istream< _Elem,_Traits>   &安培;的std ::函数getline(标准:: basic_istream< _Elem,_Traits>   &安培;&安培;,的std :: basic_string的< _Elem,_Traits,_Alloc> &)':无法演绎   ' std :: basic_istream< _Elem,_Traits>的模板参数&安培;&安培;'从   '性病:: ifstream的

1 个答案:

答案 0 :(得分:1)

请检查std::getline的格式。它将数据放在std::string中。因此,book->Idbook->Name应为std::string

getline(*inputfileStream, book->Id); // if book->Id is string
getline(*inputfileStream, book->Name);

或者,您可以读入临时字符串,然后在首选数据类型中进行转换。

string temp;
getline(*inputfileStream, temp);
book->Id = stoi(temp);
getline(*inputfileStream, book->Name);