如何用从右到左的语言进行输出

How do you output in languages that are read from right to left?

本文关键字:输出 语言 何用 从右到左      更新时间:2023-10-16

我很好奇如何处理从右到左读取的语言(如阿拉伯语、希伯来语)的输出。在C/C++或我见过的任何语言中,几乎所有内容都以从左到右的输出为前提。

是否有系统调用或其他东西会强制终端从右向左打印?即便如此,在程序内部,字符串的编码方式类似于字符串("this is a string")。难道它不需要像string("string a is this")这样的代码吗?或者什么都要用一些反向函数吗?

我怀疑在实践中,一个为从右到左语言配置的系统会有从右到右打印的终端设置,这样C/C++程序的内部就不必担心了。

如果这不能让你放心,这里有一个破解:

string str = "The look on your face is priceless.";
cout << "u202e" << str << endl;

在最底层,有用于按"从右到左"顺序设置窗口的扩展窗口样式:WS_EX_LAYOUTRTL、WS_EX_right和WS_EX_RTLREADING。此外,API调用带有LAYOUT_RTL的SetProcessDefaultLayout。这些标志和API的正确组合意味着(0,0)坐标是窗口的右上角,x轴线性增加。

这里有一个MSDN经典文章的链接,它解释了所有的细节。