2017-02-27 11 views
0

注:これは、意図的ではありません。 Qt5C++アプリケーションでのデバッグとロギング中にQOpenGLContextのような一般的なQt5タイプの文字列表現を取得するには?

内部変数の値を印刷するのに便利である、とQtで一般的な方法は、このような友人とqDebug()を使用することです:

qDebug()<<"The value was: "<< myVar; 
// Usually works well even for built-in Qt types 

これは多くの組み込みQt5固有の型やポインタでも機能しているようですが、ログ出力の代わりに実際に文字列を作成する場合には、これはずっと面倒です。

QString myString= "The value was: "+myVar; 
// Usually doesn't work well for built-in Qt types 

そこで問題は、あなたがqDebug(それらをストリーミングで得られるような組み込みのQtの種類の同等の文字列表現を得るための良い一般的な方法何である)ですか?

または「QtタイプのJava toString()と同等のものは何ですか?」

QString myString; 
QDebug stream(&myString); 
stream <<"The value was: "<< myVar; 
+0

この質問を閉じる投票をいただいた方は、本当にあなたの理由を知りたいですか?どのように「意見に基づく」と考えられるのでしょうか?それはどういう意見ですか?ありがとう! –

答えて

2

フォーマットおよび内容Qtデバッグ出力のはAPIの一部ではありません。いつでも変更できます。 Qtを更新するたびに毎回出力を監査する必要があります。そうしないと、デバッグ以外には依存しないでください。そのため、APIは、デバッグ出力と文字列の間の変換を意図的に煩雑にしています。

代わりに、必要な型の演算子をQTextStreamに実装し、ストリームを使用して文字列を作成します。

1

:私はそれはコンストラクタ

QDebug::QDebug(QString *string) 

だから、これは動作するはず与えられた文字列

に書き込み、デバッグストリームを構築していることを見つけることができるQDebug class documentationから

+0

このような変換の有用性と利便性は、おそらくこれらの懸念を上回るものではないでしょうか?最悪の場合、ドキュメンテーションでは、出力がデバッグ以外の目的でupponに依存しないように明示的に言及することができます。 –

+0

デバッグしている場合は、すでに 'qDebug'を使用してください。メッセージハンドラを再実装して出力をキャプチャすることは自由です。それを記録します。しかし、あなたは文字列への手動変換をまったく扱う必要はありません。 –

関連する問題