使用ifstream的getline时出错 - C ++

时间:2016-02-15 13:15:28

标签: c++ string ifstream getline

我需要帮助,如果我能找到类似的问题,我尝试谷歌搜索,但其他人的解决方案对我没用。

我尝试使用getline()来阅读我已打开的文件,但它不接受我给出的参数。\ n \ n

我此时想要完成的事情(而不是整个程序)是打开.csv文件并使用getline()并使用{来确定其中包含的元素数量{1}}字符作为分隔符。我的循环有一个索引,我可以只添加1,这样我就可以得到文件中的元素总数。

我之所以这样做是因为我打算将它用于学校的项目,但到目前为止,我已经陷入了,错误:

  

没有匹配函数来调用' std :: basic_ifstream :: getline(std :: string&,int,const char [2])'

我的代码在这里:

getline()

2 个答案:

答案 0 :(得分:1)

使用免费的getline()功能:

std::string line;
getline(infile, line);

答案 1 :(得分:0)

除了@UlrichEckhardt的回答,我还会处理这样的分隔符:

if(infile.is_open())
{
    string temp;
        // std::getline(std;:istream&, std::string) used below
    while(getline(infile, temp)) {            
        std::stringstream stream(str);
        std::string token;
        while (std::getline(stream, token, ','))
        if (!token.empty()) // it's up to you to decide how to handle empty tokens
            i++;
    }
}

请注意','。如果它是".",编译器会将其视为一个字符串,这正是您在错误消息中看到的内容:自动附加'\0',从而生成char[2]