std::cout.imbue()多重调用
std::cout.imbue() multiple call
编译器:Visual Studio 2019(C++20,最新版本(
我有一个关于std::locale的问题
是否无法调用std::cout.imbue multiple
为什么不可能
当我在代码以下运行时。。我可以在第二次调用函数后看到两个问号(??(。。
#include <iomanip>
#include <iostream>
#include <locale>
int main()
{
auto loc = std::locale("de_DE.utf8");
std::cout.imbue(loc);
std::cout << "locale_name = " << std::cout.getloc().name() << std::endl;
std::cout << 100.50 << std::endl;
std::cout << std::showbase << std::put_money(1050) << std::endl;
std::cout.imbue(loc); // no output below
std::cout << "locale_name = " << std::cout.getloc().name() << std::endl;
std::cout << 100.50 << std::endl;
std::cout << std::showbase << std::put_money(1050) << std::endl;
}
这是输出
locale_name=de_de.utf8
10,5
10,10??
没有这样的限制,我的输出是:
locale_name = de_DE.utf8
100,5
10,50 €
locale_name = de_DE.utf8
100,5
10,50 €
请注意,如果您的输出终端没有正确配置为显示UTF-8字符,或者您的终端字体中缺少该字形,则欧元符号可能会被??
等奇怪的东西所取代。
例如,在内存中,VisualStudio的输出控制台要么不支持Unicode,要么总是解码为UTF-16。二者之一。可能是后者。
除此之外,如果您得到的输出与上面的不同,那么在您的实现中,这将是一个有趣的标准库错误。
相关文章:
- std::cout.imbue()多重调用
- 在 COUT 语句中使用 COUT 调用函数
- 犰狳的 print() 方法和 cout 在从 Rcpp 调用时顺序不一致
- 调用 cout 时如何在结构中输出常量文本?
- 我的 cout 上有一个奇怪的输出,它把答案放在第一位,然后在我调用它的地方放一个奇怪的输出.我该怎么办?
- std::cout 如果从自定义分配器 (Visual Studio 2019) 调用,则不会输出
- COUT 内部函数调用的顺序
- 为什么调用 cout.operator<<(const char*) 打印地址而不是字符串? 如何创建一个函数本地静态"HashSet<char>"并初始化它一次?
- 调用方法时C cout.不知道我在做什么错
- C++:cout 和函数调用之间的计算顺序
- 在重复调用的函数中,使用cout只打印一次语句
- 调用"cout"语句中带有"cout"语句的函数
- 在函数调用中封装std::cout
- 当我调用std::abort()时,cout没有显示
- 两个调用 cout 的效率是否低于一个
- 函数调用不显示 cout
- 为什么我不能将 cin/cout 放在一个函数中并从 main() 调用该函数
- 为什么在堆中调用的这个函数不能调用 cout?
- 快速跟踪/查找对 printf 或 cout 的调用(丢失已久的调试输出)
- 如何调用cout函数输出流文件