未从文件中读取前导 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
变量,则输出与文件内容相同。为什么会这样?据我所知,char
和 int
之间的唯一区别是变量的字节大小。
如果 content
是一个 int
,它会将数据读取为一个 单个 整数:您会得到一个 int
,其值为 1111100000 . 如果 content
是 char
,它会分别读取每个字符。
如果在 while
循环中,您说 std::cout<<content<<'\n';
而不是 std::cout<<content;
,您会看到不同之处。那么如果 content
是一个 int
你会看到一行包含 1111100000,但如果它是一个 char
你会看到 15 行,每个输入字符一行。
如果你在输入文件的每个字符之间放置空格,它们将被读取为单独的 int
s 并且结果将是相同的,但仍然会有一个重要的区别: char
不是 char(0)
和 char(1)
,而是 '0'
和 '1'
(分别是 0x30
和 0x31
),相应数字的 ASCII 值。另一方面,int
s 实际上是 0
或 1
。
我正在逐字符读取文件内容:
文件有:
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
变量,则输出与文件内容相同。为什么会这样?据我所知,char
和 int
之间的唯一区别是变量的字节大小。
如果 content
是一个 int
,它会将数据读取为一个 单个 整数:您会得到一个 int
,其值为 1111100000 . 如果 content
是 char
,它会分别读取每个字符。
如果在 while
循环中,您说 std::cout<<content<<'\n';
而不是 std::cout<<content;
,您会看到不同之处。那么如果 content
是一个 int
你会看到一行包含 1111100000,但如果它是一个 char
你会看到 15 行,每个输入字符一行。
如果你在输入文件的每个字符之间放置空格,它们将被读取为单独的 int
s 并且结果将是相同的,但仍然会有一个重要的区别: char
不是 char(0)
和 char(1)
,而是 '0'
和 '1'
(分别是 0x30
和 0x31
),相应数字的 ASCII 值。另一方面,int
s 实际上是 0
或 1
。