【发布时间】:2021-02-01 06:32:51
【问题描述】:
我想用UTF-8验证BOM,下面写了c++代码。
但是,结果是0XFFFFFFEF, 0XFFFFFFBB, 0XFFFFFFBF。
这与我的预期不同0XEF、0XBB、0XBF。
为什么结果变成了上面?
顺便说一下,使用的UTF-8文件是Notepad++制作的。
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char file[]="/*UTF-8 file*/";
char a[3]{};
ifstream ifs(file, ios_base::binary);
ifs.read(a, static_cast<streamsize>(sizeof(a)));
cout << showbase << uppercase;
for(int i:a){
cout << hex << i << endl;
}
}
环境
GCC 9.2.0
编译选项:-std=c++2a
【问题讨论】:
-
for(int i:a){在char数组上?嗯... 签名扩展.