未从文件中读取前导 0

leading 0's are not getting read from file

我正在逐字符读取文件内容:

文件有:

000001111100000

当我用这段代码阅读时

int content;// converting to char will result in proper output.
std::ifstream fin;
fin.open("zero_one");
fin>>content;
while (!fin.eof())
{
    std::cout<<content;
    fin>>content;
}
fin.close();

我得到的输出为:1111100000(前导零不存在)但尾随零存在。

问题是:当我使用 >> 运算符读取时,为什么我不在输出中得到前导零,而在输出中得到尾随零。

此外,如果我将 int 转换为 char 以获得 content 变量,则输出与文件内容相同。为什么会这样?据我所知,charint 之间的唯一区别是变量的字节大小。

如果 content 是一个 int,它会将数据读取为一个 单个 整数:您会得到一个 int,其值为 1111100000 . 如果 contentchar,它会分别读取每个字符。

如果在 while 循环中,您说 std::cout<<content<<'\n'; 而不是 std::cout<<content;,您会看到不同之处。那么如果 content 是一个 int 你会看到一行包含 1111100000,但如果它是一个 char 你会看到 15 行,每个输入字符一行。

如果你在输入文件的每个字符之间放置空格,它们将被读取为单独的 ints 并且结果将是相同的,但仍然会有一个重要的区别: char 不是 char(0)char(1),而是 '0''1'(分别是 0x300x31),相应数字的 ASCII 值。另一方面,ints 实际上是 01