C++ ifstream 不读取\n?

标签 c++ text project newline ifstream

我正在尝试对文本文件的每行进行操作,而我现在的方式是,我的 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/

相关文章:

c++ - 这个程序的复杂度是多少

c++ - C++ 中的 long long int 与 long int 与 int64_t

c++ - 如何根据球击中 Racket 的位置使球以特定角度从 Racket 上反弹?

python - 从txt读取参数

html - 在 CSS 中设置最大字符长度

c# - 如何将 C# 项目目录传递到解决方案输出目录

c++ - 将所有依赖项打包在一个 visual studio 项目中以便轻松发送

c++ - 如何在 C++ 项目中包含 C/C++ 库(例如 libcurl)(IDE : Eclipse)?

python - 你如何管理你的 Django 应用程序?

java - 如何设置滚动 Pane 内文本区域的背景颜色?