問題タブ [manipulators]
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++ - std::endl を関数に渡して使用するにはどうすればよいですか?
std::endl
関数にマニピュレータのようなものを渡し、渡されたマニピュレータを関数で使用する方法を理解したいと思います。次のように関数を宣言できます。
そして、私はそれを次のように呼び出すことができます:
それは大丈夫です。私の問題は、内部でマニピュレータを使用する方法を理解することf
です。これは機能しません:
コンパイラに関係なく、エラーメッセージは、コンパイラがどれoperator<<
を呼び出すべきかを判断できないことに要約されます。f
コードをコンパイルするには、内部で何を修正する必要がありますか?
c++ - C++のストリームマニピュレータはどのように関数にすることができますか?
C++ で関数を呼び出す場合()
、関数呼び出しと区別するために、関数名の後に が続きます。同じ方法で ストリーム マニピュレータ関数を呼び出せないのはなぜですか?
これが許可されない理由:
endl
変数が保持していません\n
か?
ありがとう!
c++ - xalloc/iwordまたは派生クラスを介したiostreamマニピュター?
C++ iostream マニピュレーターを実装する必要があります。あちこちで読むと、人々は2つの方法を使用しているようです
を使用
ios_base::xalloc
してios_base::iword
以下の例のように、iostream から派生したクラスを実装します。
私は 2 番目の方法が好きですが、おそらく最初の方法と比較して、私には見えない、または理解できないという短所があります。
この記事Custom manipulator for C++ iostreamで方法 2 の非常に優れた実装を見つけました。
xalloc and iword
カスタムストリームをある時点で使用するために、カスタム内部状態を保存するために使用されているように見えます。
c++ - カスタム ストリーム マニピュレータ
CFileManagerOStream
から継承するカスタム ストリームがあります。std::ostream
ネットワーク ストリーム クラスから Unicode UTF16 または UTF32 文字列を取得し、CTcpStream
それらを UTF8 文字列としてディスクに格納します。文字列はメモリ内で UTF8 に変換するには大きすぎる (数テラバイトになる可能性がある) 可能性があるため、このジョブには C++ ストリーム マニピュレータを実装する必要があると思います。私が見つけたすべてのマニピュレーターの例は、文字列全体を取得して処理しますが、メモリ要件が低いため、私の場合はそうではありません。私はすべての Unicode 変換コードの準備ができています。私が解決しようとしている問題は、できるだけ少ない内部メモリで変換を行うことです。
このようなマニピュレータを使用したいと思っていました。
これは可能ですか、それとも間違ってアプローチしていますか?
c++ - ofstream を継承する C++ インデント出力クラス
したがって、次のように使用できるインデント出力クラスを作成したいと思います。
出力は次のとおりです。
したがって、IndS は現在のインデントを出力してインデントを増やし、Ind は現在のインデントを出力し、IndE はインデントを減らして現在のインデントを出力します。私はそれを次のように作成しようとしました:
したがって、これにはいくつかの問題があると思います。
コンパイルされません。
no match for 'operator<<' (operand types are 'std::ofstream {aka std::basic_ofstream<char>}' and '<unresolved overloaded function type>') ofs << Ind; candidates are:
何とかエラーすべてのコンストラクターをオーバーライドするわけではありません。これを行う方法はありますか?
IndentText = " ";
すべてのコンストラクターを書き直して、オーバーロードされたコンストラクターをデリゲートする必要があると思います
誰かがこれで私を助けてくれますか? ありがとう!
c++ - iostream マニピュレータと ANSI コンソール カラー コードの処理
ANSI カラー コードを使用して、Unix コンソールで出力をフォーマットしています。
std::setw
ただし、やなどのマニピュレータを使用するstd::left
と、文字の集まりであるため、結果はカラー コードの影響を受けます。
この問題にどのように対処すればよいですか? ストリーム マニピュレータにカラー コードを無視させる方法はありますか?
c++ - I / Oストリームを含まないmingwライブラリにネイティブな文字列操作の方法はありますか
特定の形式のシリアル番号を作成しようとしています。この番号はデータベースに入力されます。この時点で、sprintf を使用する必要がありますが、ネイティブ C++ メソッドが必要です。
サンプルコードは次のとおりです。
整数は 1 桁から 3 桁です。フォーマットは次のようにする必要があります。
001、…013、…101、…など
「シリアル番号」の形式は次のとおりです。
AAAAA001、…AAAAA013、…AAAAA101など
問題は、iostream マニピュレータを使用せずに C++ にネイティブであり、mingw-w64 ライブラリに含まれている方法があるかどうかです。それともブーストライブラリのようなものが必要ですか?
別の言い方をすれば、C sprintf 関数の C++ でのドロップイン置換はありますか?
コメントに基づいて編集:
ですから、これほど単純なものはありません....
これはうまくいかないことはわかっていますが、とにかく考えさせられます。sprintf の機能を提供するメソッドを使用して文字列クラス オブジェクトを直接操作する方法はありませんか?