C++ 在cout.rdbuf(fout.rdbuf())之后,哪个区域设置将应用于cout? #包括 #包括 #包括 使用名称空间std; int main() { 流fout(“test.txt”); fout.imbue(地区(“chs”); 法庭灌输(语言环境(“C”); cout.rdbuf(fout.rdbuf()); 不能

C++ 在cout.rdbuf(fout.rdbuf())之后,哪个区域设置将应用于cout? #包括 #包括 #包括 使用名称空间std; int main() { 流fout(“test.txt”); fout.imbue(地区(“chs”); 法庭灌输(语言环境(“C”); cout.rdbuf(fout.rdbuf()); 不能,c++,unicode,internationalization,locale,iostream,C++,Unicode,Internationalization,Locale,Iostream,std::ios::imbue locale-imbue(const-locale&loc); 融入当地环境 将loc关联到流及其关联的流缓冲区(如果 any)作为要与区域设置敏感一起使用的新区域设置对象 行动 使用寄存器注册的所有回调函数 调用imbue_事件作为其第一个参数 事实上,这个成员函数调用其继承的同音词 ios_base::imbue(loc),以及流是否与流关联 缓冲区,也调用rdbuf()->pubimbue(loc)。 另外,请参见 27.4.4区域设置和iostream的协

std::ios::imbue

locale-imbue(const-locale&loc);

融入当地环境

将loc关联到流及其关联的流缓冲区(如果 any)作为要与区域设置敏感一起使用的新区域设置对象 行动

使用寄存器注册的所有回调函数 调用imbue_事件作为其第一个参数

事实上,这个成员函数调用其继承的同音词 ios_base::imbue(loc),以及流是否与流关联 缓冲区,也调用rdbuf()->pubimbue(loc)。

另外,请参见

27.4.4区域设置和iostream的协作

基类ios_base包含一个locale对象。格式和 由派生流类定义的解析函数使用 该区域设置的数字方面。

类模板basic_ios包含一个指向流缓冲区的指针。 这个流缓冲区也有一个locale对象,通常是 流类函数使用的相同区域设置对象。 流缓冲区的输入和输出函数使用代码转换 附加区域设置的方面。

在您的情况下,它将使用“C”数字区域设置和“chs”字符区域设置。

heh,我将您的尼克读为“xilinx”:)
#include <locale>
#include <fstream>
#include <iostream>

using namespace std;

int main()
{
    ofstream fout("test.txt");

    fout.imbue(locale("chs"));
    cout.imbue(locale("C"));

    cout.rdbuf(fout.rdbuf());
    cout << "中文"; // Which locale will apply to here? "C" or "chs"?
}