如何知道它是c ++读取文件中行的结尾

时间:2017-05-03 19:54:53

标签: c++ readfile

我需要知道如果它结束了

,该如何停止

this example of my file

我需要最后一个15的元素的int值 而且对于其他行,我需要知道这个值是否是行

中的最后一个元素

我尝试getline(文件,行) 但它只是给了我一个字符串! 还有line.length();给我文件的长度。

4 个答案:

答案 0 :(得分:2)

您应该使用std::getline并解析您获得的字符串,或者使用char-by-char并将CR / LF视为行尾。然后从它向后移动直到你得到一个空间。

答案 1 :(得分:2)

您应继续使用getline功能,然后您将使用std::string来使用最后一位数字:

string str = <getline() result>
size_t last_index = str.find_last_not_of("0123456789");
string result = str.substr(last_index + 1);
int num = std::stoi(result);

这将为您提供最后一个号码的int表示。

答案 2 :(得分:1)

这将提取每行的最后一个数字:

ifstream f ("./numbers");
vector<int> v;
int i;
while (f >> i) {
    char c = f.get();
    if (f.eof() || c == '\r' || c == '\n') {
        v.push_back(i);
    }    
}
如果文件未被新行终止,则

f.eof()可能为真,在这种情况下,f.get()调用可能会失败并设置eofbit。

答案 3 :(得分:0)

  std :: ifstream file {“your-file”};&#xA; std :: string line;&#xA; while(getline(file,line)){&#xA; std :: istringstream iss {line};&#xA;的std ::矢量&lt; INT&GT; VEC {的std :: istream_iterator&LT; INT&GT; {ISS},&#XA;的std :: istream_iterator&LT; INT&GT; {}};&#XA; if(vec.size()== 1){&#xA; //只有一个元素&#xA; }&#XA; vec.back()//行的最后一个值(/!\ check not empty first first)&#xA;}&#xA;  
&#xA;