从右到左隔离字符串。 C ++

时间:2018-05-23 10:43:26

标签: c++ unicode farsi

有没有人有过Unicodes的经验?

我正面临着波斯语unicodes的棘手问题 我有std::wstring s = (L"\u0634\u0646\u0628\u0647");这是一个波斯语单词。当我调试它时,我看到底层的单词正是我想要的,但是反过来了。所以我研究并发现u2067是从右到左阅读字符串 注意:

  

我不能手动反转字符串,因为波斯语字符正在改变它们的形状而不管它们在字符串中的位置。

所以我在开头添加了2067,并得到了  std::wstring s = (L"\u2067\u0634\u0646\u0628\u0647");
但是现在底层的字符串是相同的,只是在字符串中添加一个正方形而不是反转。
有没有人体验过这些东西?请提出解决方案。谢谢!

1 个答案:

答案 0 :(得分:4)

底层字符串将是相同的。您没有更改字节的顺序,这是在代码中写入的。但是,了解Unicode的渲染器应该采用这些字节并从右到左显示字符。这是一个视觉的东西。它与编码无关。从你的问题来看,你所期待的还不完全清楚。您可能正在调试器中查看字符串,并且调试器不支持Unicode的此功能。如果您尝试将字符串输出到正确的控制台,您应该按预期看到它。