首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ifstream无法捕获每行最前面的字符

Ifstream无法捕获每行最前面的字符
EN

Stack Overflow用户
提问于 2014-09-04 23:45:17
回答 1查看 50关注 0票数 0

我想通过使用与getline函数关联的ifstream从文本文件中读取精确的以下行

代码语言:javascript
复制
KM78457   , C1    , Testing              , ZMY290HR6UP-B   ,GHTTTTTTT          ,   0.1268 ,      32 ,        4.06 ,

但是它应该能够读入“,C1,Testing,ZMY290HR6UP-B,GHTTTTTTT,0.1268,32,4.06”,因此仍然缺少,因为所有人都未能在最前线捕捉到单词"KM78457“。

代码语言:javascript
复制
std::ifstream fi;

std::string streamline;
fi.open("C:/exp_test.txt",std::ios::in );

while (!fi.eof())
{

    fi.clear();
    fi.seekg(0,std::ios::cur);
    fi >> newline;
    std::getline(fi,streamline);
    std::cout << streamline ;

}

有没有人能帮我一下,谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-09-05 00:02:12

问题是您在格式化提取之后直接使用未格式化的输入。默认情况下,格式化的提取器不会忽略或丢弃用户提交输入后出现的剩余换行符。您需要使用std::ws手动清除换行符。

此外,使用!eof()有一个输入条件总是错误的。这是错误的,因为您在执行输入之前检查流的状态,这可能会导致问题,如果您使用失败的提取结果。

使用输入操作本身作为条件。它将执行读取,然后检查流的状态,如果流遇到错误,则返回true或false。

代码语言:javascript
复制
while (std::getline(fi >> newline >> std::ws, streamline))
{
    std::cout << streamline;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25669715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档