C++ std::getline使用char32\u t抛出错误的\u cast

C++ std::getline使用char32\u t抛出错误的\u cast,c++,C++,我有以下程序,它从一个文件f1.txt中获取第一行,然后将其复制到另一个文件f2.txt #include <fstream> #include <string> int main() { std::basic_ifstream<char32_t> fin("f1.txt"); std::basic_ofstream<char32_t> fout("f2.txt"); std::u3

我有以下程序,它从一个文件
f1.txt
中获取第一行,然后将其复制到另一个文件
f2.txt

#include <fstream>
#include <string>

int main()
{
    std::basic_ifstream<char32_t> fin("f1.txt");
    std::basic_ofstream<char32_t> fout("f2.txt");
    std::u32string s;
    std::getline(fin, s);
    fout << s;
}
getline
函数似乎是问题所在,因为如果我删除它,问题就会消失:

#include <fstream>
#include <string>

int main()
{
    std::basic_ifstream<char32_t> fin("f1.txt");
    std::basic_ofstream<char32_t> fout("f2.txt");
    std::u32string s = U"π";
    //std::getline(fin, s);
    fout << s;
}

问题是什么?

相关?简而言之,I/O流根本不支持
char16\u t
char32\u t
,只支持
char
wchar\u t
#include <fstream>
#include <string>

int main()
{
    std::basic_ifstream<char32_t> fin("f1.txt");
    std::basic_ofstream<char32_t> fout("f2.txt");
    std::u32string s = U"π";
    //std::getline(fin, s);
    fout << s;
}
std::locale::global(std::locale("en-US.UTF-8"));