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

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

ただいまの
回答率

90.76%

  • VC++

    132questions

    VC++ (Visual C++) とは、Microsoft製のC++のための統合開発環境です。

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

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 220

pikopaso

score 2

ツール→オプションから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*)
タブ幅はメモ帳に出力されたもので確認しました。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • can110

    2017/12/19 11:12

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

    キャンセル

  • can110

    2017/12/19 11:32

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

    キャンセル

  • can110

    2017/12/19 11:33

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

    キャンセル

回答 2

+1

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/19 11:49

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

    キャンセル

  • 2017/12/19 12:07

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

    キャンセル

0

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    PHPでテキストファイルを編集するにはどうしたらいいですか?

    PHPを使って、テキストファイルの整形をしたいです。 2015/01/01 予定あり 2015/01/02 予定なり 2015/01/03 予定なし 2015/01/0

  • 解決済

    C言語 式の構文エラー 内容について

    複数の単語からなる文を入力し,各単語の先頭文字を大文字に変えて表示させる というプログラムを作っているのですが、コンパイル時に ------ Borland C++ 5.5.1 f

  • 解決済

    絶対URLから相対URLに変換する処理(PHP)

    絶対URLから相対URLに変換してくれるようなメソッドを作りたいです。 <ul>   <li><a href="http://example.com/hoge1/index.htm

  • 解決済

    Python2.7のprint文で変数を展開したい

    $a = 10; echo "Hello,World!".$a.$a+2;のようにどこでも変数を展開し、演算などをしたい。 a = 10 print "Hello,World!" 

  • 解決済

    C言語でテキストファイル→文字列(1行すべてまとめる)

    C言語でテキストファイルを文字列に読み込みたいのですが、このときテキストファイルの改行をすべて削除したいです。 sample.txtが GGGGG CCCCC AAAAA TTTT

  • 受付中

    VC++(MFC)

    前提・実現したいこと VC++でログを吐き出すロガークラスのようなものを実装しています。 発生している問題・エラーメッセージ ログに現在時刻を出したいのですが、どのように

  • 解決済

    参照型?ポインタ?

    関数の引数が書きなのですが、 通常のポインタや参照型と何が違うのでしょうか? , char*& strResult,

  • 解決済

    ファイル読み込み方法

    お世話になっております。 C++を学習中の学生です。 現在下記のような住所録アプリケーションを作成中です。 写真右下にある読み込みボタンを押下し 上記のテキストファ

同じタグがついた質問を見る

  • VC++

    132questions

    VC++ (Visual C++) とは、Microsoft製のC++のための統合開発環境です。