質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

2回答

882閲覧

VC++で\tのタブ幅が8になる

pikopaso

総合スコア10

0グッド

1クリップ

投稿2017/12/19 01:40

編集2017/12/19 02:46

ツール→オプションからC++のタブ、インデントのサイズを4に設定しています。
プログラムを記述する際にタブを押すと4つ分の空白が挿入されるので設定はできていると思います。
しかしプログラム内の\tを出力してみるとタブ幅が8になってしまっています。
別の設定が必要なのでしょうか。そもそも\tはタブ幅8と決まっているのでしょうか。

追記1:
\tはCStringのformatで指定し、それをまずエディットボックスに表示させました。この時点では半角空白14個分でした。
その後エディットコントロールの内容をファイルに出力したところ半角空白8個分になっています。
確認方法は、\tで出力されたタブ幅と一致するまで自分で半角空白を打つことで確認しました。

追記2:
//エディットボックスに表示
CString str;
str.Format("\t%s",testStr);
m_testEdit.SetWindowTextA(str); //m_testEditはエディットボックスに割り当てたCEDit型メンバ変数

半角空白14個分は追記1の内容と同じ自分で半角空白を打って一致するまでの回数で確認しました。

//ファイル出力出力
fprintf(file, str); //fileはファイルポインタ(FILE*)
タブ幅はメモ帳に出力されたもので確認しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2017/12/19 02:12

「\tを出力」とは何でどのようにして出力したのか、「タブ幅が8」とは何でどのように確認したのかを追記ください。
can110

2017/12/19 02:32

「~エディットボックスに表示~」した実際のコードと「半角空白14個分」とはどのように確認したのかを追記ください。
can110

2017/12/19 02:33

「~ファイルに出力~」した実際のコードと出力ファイルのタブ幅を何で確認したのか(メモ帳?)を追記ください。
guest

回答2

0

タブ自体は、1バイトの文字コードです。

ツール→オプションからC++のタブ、インデントのサイズを4に設定しています。

 は、Visual Studio のエディタ上で、タブを4カラムごとに見えるように表示しているだけです。

 ファイルに出力したタブコードも1バイトの文字コードですので、そのファイルを見るエディタでタブのカラム設定をする必要があります。

投稿2017/12/19 02:32

showkit

総合スコア1638

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pikopaso

2017/12/19 02:49

メモ帳に出力している場合はメモ帳のタブを4カラムに設定する必要があるということですね。 エディタに依存せず半角空白4つ分幅を開ける場合は、\tではなくて実際に半角空白4つを文字列にいれるしかないのでしょうか
showkit

2017/12/19 03:07

その通り、半角空白4つを文字列にいれます。 ただし、エディタのように表示するには、4バイトずつの区切りで、たとえば、先頭2バイトに文字がはいっていて、タブであれば、2文字の空白をいれるなどの工夫が必要になります。
guest

0

タブ文字をどのように表示するかは、それを表示するモノにより異なります。

ツール→オプションからC++のタブ、インデントのサイズを4に設定しています。

は、VisualStudioのソースコードエディタでの設定にすぎません。
エディットコントロールでは、ダイアログフォントやCEdit::SetTabStopsに関連する設定によって決まると記憶しています。
また、メモ帳では空白8文字の幅固定であったかと記憶しています。

投稿2017/12/19 02:54

can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問