2017-04-19 12 views
4

私はこのデモプログラムを書いて私の質問を説明します。それは何も有効ではありません。Visual Studioでブレークポイントのアクションで長い文字列を印刷するには?

#include <string> 

int main(void) 
{ 
    std::string strMsg = "This is a very very long message, long enough that Visual Studio can't output it entirely. If you don't believe, just try it yourself and you'll see. What? I'm not long enough? Now it will be enough. You'll see ellipses at the end."; 
    return 0; 
} 

それから私は出力ウィンドウstrMsgを印刷するアクションで、return 0;にブレークポイントを追加します。 strMsgは=「これは十分な長さのVisual Studioは完全にそれを出力することができない非常に非常に長いメッセージである

あなたが信じていない場合:。のように印刷された文字列が見えます

enter image description here

、ちょうどそれを自分で試してみて、あなたが表示されます。何?私は十分な長さではないよ?今では十分でしょう。...

が印刷されたメッセージの最後に ...を注意してください。それがあるためです文字列が小さすぎるすべてを印刷してください。

これを解決する方法はありますか?そうすれば、Visual Studioは文字列全体を印刷できますか?

+0

これはあなたの実際のケースでは、ちょうど興味のあなたのためのオプションではないかもしれません:あなたは、文字列に改行を挿入した場合はどうなりますか? – Jeremy

+0

@Jeremyあなたは '\ n'を意味しますか?文字はそのまま印刷されます。 '" abc \ n "'は 'abc \ n 'として表示されます。 –

答えて

0

行にブレークポイントを置き、変数名を選択することによって、文字列の完全な値を調べることができます。次に、テキスト、XMLなどとして表示できる小さなドロップダウンが表示されます。テキストビジュアライザを使用できます。

リアルタイムコードでは、printfまたはcoutを使用して値をコンソールに出力するか、ファイルまたはログに出力する必要があります。

enter image description here

+0

それは本当です。しかし時にはヒットブレークポイントが実行されても(一時停止せずに)プログラムを実行し続ける必要があります。例えば、時間に敏感な機会のために。 –

+0

次に、いくつかのロギングフレームワークを実際に使用する必要があります。コンソールに印刷すると、特にタイムクリティカルなコードでアプリケーションが遅くなることがあります。 –

+0

あなたはおそらく正しいでしょう。しかし、ログはすべてのケース/変数をカバーすることはできませんが、私はまだ出力ウィンドウにメッセージを記録する*必要があります。 –

関連する問題