C++读txt文件的相关问题

我是使用逐字符去读文件的。代码如下:

    ifstream ifs;
    ifs.open(fileName, ios::in);

    if (!ifs.is_open())
    {
        cout << "文件打开失败" << endl;
        return false;
    }

    char c;
    while ((c = ifs.get()) != EOF)
    {
        cout << c;
    }

    ifs.close();

但是,我发现一个问题:

如果txt文件里是中文,保持源代码不变,控制台是能正常输出文件的中文内容。
但是,将cout << c; 换成 cout << c << endl; 就会发现控制台不能输出中文了。

所以,读取中文文件时,c = ifs.get(),这里的c读到的到底是什么?

我又试了一个如下两个代码:

cout << '我'; //输出:52946
cout <<  "我"; //输出:我

从输出结果看,好像一个中文字不是一个字符

一个中文字占2个char空间。

1、占1个字节的编码是ISO-8859-1;
2、占2个字节的编码是GB2312、GBK、GB18030、UTF-16BE、UTF-16LE;
3、占3个字节的编码是UTF-8;
4、占4个字节的编码是UTF-16。