Kul*_*ulo 5 c++ printf wstring
我满足了在控制台中对齐输出文本的要求。输出文本存储为std::wstring并编码为UTF-8. 使此任务变得棘手的是,输出文本同时包含 ASCII 字符和日语字符,例如\xe3\x83\x8a5\xe5\x9b\x9e1\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb34a\xe3\x82\xb9F。由于ASCII字符和日文字符的宽度不同,使用setw()或直接无法对齐。\n例如,wprintf(L"%-10s")
#include <iostream>\n#include <iomanip>\nusing namespace std;\nint main(){\n std::locale::global(std::locale(""));\n wstring s[] = {L"\xe7\x9f\xad3\xe3\x83\x9e231\xe3\x83\xbc\xe2\x97\x8b",L"\xe3\x81\xae\xe3\x81\x8d3\xe3\x83\xbc\xe3\x83\x8a",L"\xe3\x81\x90\xe3\x83\x9e",L"\xe3\x82\x8d\xe3\x81\xab\xe3\x83\x88"};\n for(int i=0;i<4;i++) wcout << setw(10) << s[i] <<123<< endl;\n}\nRun Code Online (Sandbox Code Playgroud)\n会像:
\n \xe7\x9f\xad3\xe3\x83\x9e231\xe3\x83\xbc\xe2\x97\x8b123\n \xe3\x81\xae\xe3\x81\x8d3\xe3\x83\xbc\xe3\x83\x8a123\n \xe3\x81\x90\xe3\x83\x9e123\n \xe3\x82\x8d\xe3\x81\xab\xe3\x83\x88123\nRun Code Online (Sandbox Code Playgroud)\n但如果文本仅包含 ASCII 字符,则它可以正常工作。
\n我知道我可以自己编写一个新函数来对齐它,但我想知道是否已经有一个可靠的解决方案。
\n| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |