use*_*458 1 c++ ascii fstream character-encoding
以下语句打印'A'.为什么?"A"的ASCII码是不是65?
cout<<char(1857);
Run Code Online (Sandbox Code Playgroud)
1857年是否会与演员一起变成65岁?我正在使用int_type get()方法从fstream中读取字符,并为'A'获取类似1857的奇怪值,为'B'获取1858等等.
这是我的代码:
int ch;
while(file) // file is fstream.
{
ch = file.get();
cout<<char(ch)<<":"<<ch<<" "; /*prints A:1857 B:1858 C:1859*/
}
Run Code Online (Sandbox Code Playgroud)
注意:将int转换为char将其截断为8位,因此将1857转换为65.但是为什么get()方法返回1857而不是65?
1857 in binary 0111 0100 0001
Run Code Online (Sandbox Code Playgroud)
Char截断低位8,即0100 0001二进制65,即字符'A'
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |