繁体   English   中英

Ifstream 在几行后停止读取文件

[英]Ifstream stops reading file after a few lines

我正在使用ifstreamstringstream来读取文件,但它在几行后停止......

string read(string filename)
{
    ifstream inFile;
    inFile.open(filename);
    stringstream strStream;
    strStream << inFile.rdbuf();
    inFile.close();
    string str = strStream.str();
    return str;
}

此代码在 'zh¬' 之后停止
我在想也许它们是 ascii 表中的控制字符,它停止后的第一个字符是 26。
但我不认为这很重要。

您的ifstream正在以文本模式打开。 尝试以二进制模式打开文件: std::ifstream inFile(filename, std::ios::binary);

文本 stream 是组成行的有序字符序列(零个或多个字符加上终止的 '\n')。 最后一行是否需要终止 '\n' 是实现定义的。 Characters may have to be added, altered, or deleted on input and output to conform to the conventions for representing text in the OS (in particular, C streams on Windows OS convert \n to \r\n on output, and convert \r \n 到 \n 输入)

  • 仅当满足以下所有条件时,才能保证从文本 ZF7B44CFFAFD5C52223D5498196C8A2E7BZ 读取的数据与之前写入该 stream 的数据相等:
    数据仅由打印字符和控制字符 \t 和 \n 组成(特别是在 Windows OS 上,字符 '\0x1A' 终止输入)

  • 没有 \n 前面有一个空格字符(在 \n 之前写出的空格字符在读取时可能会消失)

  • 最后一个字符是\n

二进制 stream 是一个有序的字符序列,可以透明地记录内部数据。 从二进制 stream 读取的数据始终等于之前写入该 stream 的数据。 实现只允许在 append 多个 null 字符到 stream 的末尾。 宽二进制 stream 不需要以初始移位 state 结束。

https://en.cppreference.com/w/cpp/io/c#Binary_and_text_modes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM