問題タブ [iomanip]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++ cout 小数点位置合わせ
10 進数の値を揃えるのに苦労しています。正しい配置と setprecision/fixed の組み合わせであると確信していますが、機能していないようです。このトピックについて他の質問が寄せられたことは知っていますが、一連の列を取得するための明確な解決策は見つかりませんでした (一意の cout ステートメントを揃える)。
これは私のコードの一部です:
これは次のようになります。
これは私も好きです:
c++ - g++ の出力と Visual Studio の出力の不一致。フロート変数
C++ で clock_t 関数を使用してテストしていますが、問題が発生しました。コンパイルするときは、2 つの異なるコンパイラで行います。私の Windows 7 コンピューター (2012) の Visual Studio、および「レンジャー」と呼ばれる Unix システムの g++。さまざまな並べ替え関数を実行するのにかかる時間を秒単位 (最大 1000 分の 1 秒) で出力するためにコードをコンパイルしたところ、g++ コンパイラはタイムスタンプを 1000 で除算する試みを完全に無視しているようですミリ秒から 2 番目の形式に変換します。何かアドバイス?これに関して、g++ と Visual Studio のコンパイラに違いはありますか?
短いコード スニペット (出力と除算のために行うこと):
Visual Studio の出力 (正しい):
Unix の出力 (正しくない) :
助言がありますか?ありがとう!
c++ - Armadillo ライブラリの表示桁数を増やしたい
Armadillo 線形代数ライブラリを使用して行列を対角化しています。最後にファイルに表示/書き込みされる桁数を増やす必要があります。Armadillo のリファレンスによると、「arma::mat」は double 行列を作成します。そこで、iomanip の std::setprecision を使ってみたのですが、なかなかうまくいきませんでした。問題をキャプチャする最小限のコードを次に示します。
そして、ここに私が得るものがあります:
興味深いことに、これは double 変数 "Trace_A" に渡されるトレースでは機能しますが、マトリックス自体では機能しません。私がここで間違っていることは何か分かりますか?
c++ - Stream Out 文字列の一部
a をストリーミングしたいのstd::string
ですが、最初の 2 文字または最後の 2 文字なしで実行できるようにしたいです。
例えば:
iomanip
そのためのツールはありますか?それとも、先に進んで一時的なstring
s を作成する必要がありますか?
c++ - setw による切り捨て
強制的setw
に切り捨てる方法はありますか?
出力を取得したいとします。
何とか何とかブリールブ
何とか何とかブリーブリー
これを機能させる方法はありますか:
c++ - C++ での出力フラグのリセット
関数の使用を終了する行で、すべての出力フラグをデフォルトにリセットするつもりですresetiosflags
。私の期待に反して、この方法で実行しようとすると、誤った出力が提供されます。
私の既知の代替手段は、それらを再記述して個別にフラグを解除することですが、それは不必要に思えます。
c++ - C++ iomanip ラッパーを使用する準備はできましたか?
iomanipストリーム修飾子のそのままの使用は、a) 冗長であり、b) エラーが発生しやすい ( sticky と non-stickyなど) ため、ユーザー定義型の場合、すべてのものをデフォルトで非表示にすることができますoperator<<
...ここに示すように、たとえば。
ただし、組み込み型をフォーマットする場合 (ユーザー定義の演算子内からであっても) 、データが関数呼び出しでラップされる(beware C++14)と同様のアプローチを使用する方がはるかに便利です (IMHO) 。適切なフラグを設定 + リセットする一時オブジェクトを返します。std::quoted
基本的に、書く代わりに:
あなたは仮説的に次のように書くでしょう:
例が示すように、フラグの組み合わせはトリッキーになる可能性があり、悪魔は細部にあると確信しているため、「シェブロン地獄」に対処しようとする先行技術/既存のヘルパー ライブラリがあるかどうか疑問に思っていました。:-)
- これに対処する既存のライブラリはありますか?
- 自分で一連のヘルパーを作成したい場合、ここでの技術的な落とし穴は何ですか?
具体的には、この質問は、「タイプ セーフなフォーマット文字列」(Boost.Format が提供するものなど) に関するものではありません。
また、「最高の」ライブラリを求めているのではなく、通常の ostream に対してこれを行うライブラリについて尋ねています。(なぜか見つからなかったので。)
たとえば、C++ 形式の書き込み APIは次のようなことを行いますが、std::iostream に対してではなく、ライブラリの「ストリーム」タイプに対して行います。
c++ - setprecision fixed を使用できるのに、なぜ showpoint を使用するのですか?
showpoint の目的がよくわかりません。小数点を強制的に表示することはわかっていますが、showpoint を使用しなくても「cout << setprecision << fixed」で十分です。
showpoint が必須である例を教えてください。
c++ - 余分なメモリをコピーせずに、フォーマットされた char 配列を ostream に送信します
char 配列を ostream に送信する必要があります。次の印刷機能があるとします。
バージョン 1:
バージョン 2:
上記の両方のバージョンは、ある程度機能します。バージョン 1 は余分な文字列オブジェクトを作成するため (メモリの割り当てとデータのコピーが発生します)、あまり効率的ではないように見えます。
ただし、バージョン 2 では書式設定の可能性がなくなります。次の例では、バージョン 1 がうまく機能します (つまり、io マニピュレータは幅を 10 に設定し、それを次の出力フィールドに適用します)。
V1 のように機能を維持する方法はありますが、割り当て/メモリコピーに追加料金を支払う必要はありませんか?