0

一度使ったら

setlocale(LC_ALL, ""); //use system locale

printf関数が正しく配置されていません。別のロケールで文字列を整列させるにはどうすればよいですか?

4

1 に答える 1

2

フィールド幅は、最新の多言語システムでの位置合わせには使用できません。整列時にバイトではなく文字をカウントできたとしてもprintf(注:ワイドprintfファミリー関数はこれを実行できます)、CJK全体の文字(通常は使用する)だけでなく、文字(通常は水平方向のスペースを使用しない)の結合にも対応できません。端子に2列)。

私が考えることができる最善のアプローチは、最初に文字列を文字列に変換しwchar_t、次にそれを使用wcswidthして文字セル列の幅を決定することです。次に、引数付き%.*sのフィールド指定子を使用して、フィールドの前後に適切な数のスペースを追加します。ここで、は表示するスペースの数です。n""n

于 2012-07-11T13:26:19.497 に答える