OS: Linux Ubuntu
言語: C++
引数でchar*型の文字列配列(マルチバイト含む)を受け取り
指定した幅で枠つきで文字列を出力したいのですがうまくいきません。
作りたい出力
━━━━━━━
┃1: あいうえお┃
┃2: かきく ┃
┃3: abc ┃
━━━━━━━
- str[] = {"あいうえお", "かきく", "abc"}
- あいうえおの後ろは空白なし
- 他は空白と文字列を合計してあいうえおと同じ長さに合うように
私の環境では日本語は3byteと認識され
strlen("あいうえお") = 15
となります。
イメージでは
for (i = 0; i < strlen(str[])の最大値; i++) {
cout << "┃" << i << ":" << setw(15) << left << str[i] << "┃"
}
のようなコードになると思うのですが
日本語一文字が出力上は2byte分の幅に見えるのに
認識としては3byteになってしまうので空白が1byte多くなり
━━━━━━━
┃1: あいうえお┃
┃2: かきく ┃
┃3: abc ┃
━━━━━━━
のようにずれてしまいます。
(表記上、最初の枠もずれていますが
現状は足りない分を埋めるsetfillが余計に働いてしまうということです。)
何か対策はありますでしょうか?
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
> Unicodeで作成していました。
> Shift-JISだと確かに2byteで問題なくできました。
ならばUTF-8だったのでしょう。
UTF-16なら全角/半角によらず2byteですし、strlenは誤動作しますから。
> ただ、フォントに依存しないような結果画面にしたいのですが
> 端末の文字コードをプログラム実行に強制変更などということはできますか?
フォントと文字コードは別物です。
Shift-JISに変換したのち長さを返す関数をひとつ用意すればいいかと。
No.5
- 回答日時:
>意図としては結果画面が環境依存したくないということです。
環境依存にしたくないということであれば「等幅フォント」前提というのは環境依存ではないでしょうか。
>端末の文字コードをプログラム実行に強制変更などということはできますか?
できません。
No.4
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
一番右のスペース以降の文字列...
-
機種依存文字と特殊文字について
-
文字列から、null値を除去する方法
-
マルチバイト混在の文字列整形
-
エンコード・デコードの仕方
-
エクセルで13,410円を数値の134...
-
「シフトJIS X 0213」形式の文...
-
VBA 変数名に変数を使用したい。
-
【VB】コンボボックスにデータ...
-
WORD VBA プログラム修正をお願...
-
クリスタルレポートで困ってい...
-
Excel VBAでグループ毎に集計す...
-
Dir関数で読み取り順を操作でき...
-
VBとアクセスでSQL文に変...
-
エクセルデータをVBで検索でき...
-
CSVファイルのエクスポートでソ...
-
AccessからExcelへエクスポート...
-
構造体配列の一部初期化!!!
-
ExcelVBAについて
-
VB6で、一次元配列と二次元配列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CString型 全角半角を意識せず...
-
EXCELのVBAでLenB関数について
-
ファイル名の一部削除について
-
文字列から、null値を除去する方法
-
TextFieldParserの固定長桁数を...
-
StrConvでUnicodeに変換出来な...
-
一番右のスペース以降の文字列...
-
VBScriptで半角カナと半角英数...
-
【Excel VBA】セル内テキストの...
-
アクセス ステータスバーの文...
-
「シフトJIS X 0213」形式の文...
-
WSTRINGとは?
-
エクセルで13,410円を数値の134...
-
VBからID3タグをいじる方法
-
VB6のテキストボックスに入力し...
-
HEX
-
指定バイト目を取り出すにはど...
-
C言語とWin32APIで全角かなの...
-
vb2008 MIDB関数
-
ASC関数
おすすめ情報