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"));