gpt4 book ai didi

c++ - Ifstream 无法捕获每行中最前面的字符

转载 作者:行者123 更新时间:2023-11-28 06:42:39 32 4
gpt4 key购买 nike

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

KM78457   , C1    , Testing              , ZMY290HR6UP-B   ,GHTTTTTTT          ,   0.1268 ,      32 ,        4.06 ,

但是应该可以从", C1 , Testing , ZMY290HR6UP-B ,GHTTTTTTT , 0.1268 , 32 , 4.06 , , , , , "开始读,所以还是漏了,最多都抓不到"KM78457"前线。

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 ;

}

谁能帮帮我,谢谢。

最佳答案

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

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

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

while (std::getline(fi >> newline >> std::ws, streamline))
{
std::cout << streamline;
}

关于c++ - Ifstream 无法捕获每行中最前面的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25669715/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com