一度使ったら
setlocale(LC_ALL, ""); //use system locale
printf関数が正しく配置されていません。別のロケールで文字列を整列させるにはどうすればよいですか?
フィールド幅は、最新の多言語システムでの位置合わせには使用できません。整列時にバイトではなく文字をカウントできたとしてもprintf
(注:ワイドprintf
ファミリー関数はこれを実行できます)、CJK全体の文字(通常は使用する)だけでなく、文字(通常は水平方向のスペースを使用しない)の結合にも対応できません。端子に2列)。
私が考えることができる最善のアプローチは、最初に文字列を文字列に変換しwchar_t
、次にそれを使用wcswidth
して文字セル列の幅を決定することです。次に、引数付き%.*s
のフィールド指定子を使用して、フィールドの前後に適切な数のスペースを追加します。ここで、は表示するスペースの数です。n
""
n