gpt4 book ai didi

C++ ifstream 不读取\n?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:25 25 4
gpt4 key购买 nike

我正在尝试对文本文件的每行进行操作,而我现在的方式是,我的 ifstream 对象没有检测到 \n 每行的字符,这是该项目所必需的。这是我现在的方式:

std::ifstream instream;
instream >> value;
while (value != '\n')
{
// do code and such
}

但是当我让它运行循环时,我得到的只是程序中所有内容的一行。虽然它完全按照循环中的预期进行,但我需要识别 \n 。这是我的 .txt 文件:

LXXXVII
cCxiX
MCCCLIV
CXXXLL
MMDCLXXIII
DXLCC
MCdLxxvI
XZ
X
IV

就是这样。我不能改变它。

最佳答案

>>> 运算符执行“格式化输入操作”,这意味着(除其他事项外)它会跳过空格。

要在不跳过空格的情况下一个接一个地读取原始字符,您需要使用“无格式输入操作”,例如 istream::get()。假设 valuechar 类型,您可以使用 instream.get(value)

读取每个字符

当到达 EOF 时,读取将失败,因此您可以循环读取每个字符,例如:

while (instream.get(value))
// process value

但是,要逐行阅读,您可以读入 std::string 并使用 std::getline

std::string line;
while (getline(instream, line))
// ...

这是一个未格式化的输入操作,它将 \n 之前的所有内容读取到字符串中,然后丢弃 \n 字符(因此您需要手动追加\n 在每个 erad 行之后重建原始输入)

关于C++ ifstream 不读取\n?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15706776/

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