問題タブ [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.

0 投票する
4 に答える
1174 参照

c++ - C フォーマット文字列を C++ io マニピュレータに変換します

C では、printf("%+10.5d\n", x); を使用しています。整数 x を出力します。

C++ io マニピュレーター用の小さなテスト ケースを作成しましたが、出力の形式が異なります。

出力は次のとおりです。

printfと同じ出力を得るために、ここで欠落しているioマニピュレーターはどれですか?

0 投票する
2 に答える
1273 参照

c++ - すべての C++ IOStream マニピュレータの挿入演算子を一般的に定義する方法は?

全て、

次のコードが 'std::endl' のコンパイルに失敗するのはなぜですか?

次の G++ 4.5 エラーが発生します。

willo:~/test_cpp$ g++ -Wall test_overloaded_insertion_manipulators.cpp test_overloaded_insertion_manipulators.cpp: 関数 'int main(int, char**)': test_overloaded_insertion_manipulators.cpp:60: エラー: 'my_stream < の 'operator<<' に一致しません< std::endl'</p>

プリミティブ、std::ios_base、およびカスタム マニピュレータの場合と同様に、コードが std::endl の「operator<<」をインスタンス化することを期待しています。

コンテキストとして、現在の IOStream マニピュレータと 1 つまたは 2 つのカスタム マニピュレータで動作するライト API IOStream のようなクラスを作成しようとしています。

0 投票する
1 に答える
199 参照

c++ - C ++のiostreamライブラリに独自の関数宣言を入れる方法は?

この宣言を iostream ライブラリに入れたいのですが、どうすればいいですか??

0 投票する
2 に答える
1072 参照

graphics - MathematicaでLocatorとManipulateを使ってステップサイズを設定する

このMathematicaコードを考えると、

ロケーターのステップ距離を設定するにはどうすればよいですか?そして、可能であれば、それらを制約しますか?

0 投票する
2 に答える
3153 参照

c++ - 引数を持つストリーム マニピュレータはどのように機能しますか?

Stroustrup の C++ ブックには、引数を取るカスタム マニピュレータの例があります (添付のコードを参照してください)。構造体の作成方法について混乱しています。特に、「smanip」のコンストラクターには 2 つの int 引数があるように見えます。1 つは関数ポインター「ff」用、もう 1 つは「ii」用です。次を使用して構造体を作成するために int 引数がどのように渡されるのかわかりません。

さらに、これらの関数が呼び出される順序と、型引数 Ch および Tr はどのように決定されるのでしょうか? どうもありがとう。

0 投票する
1 に答える
9822 参照

c++ - cinに対するnoskipwsの影響>>

私が理解しているように、抽出演算子は最初に空白をスキップし、空白またはストリームの終わりに遭遇すると停止します。noskipwsを使用すると、先頭の空白を無視するのをやめることができます。

noskipwsを使用した次のプログラムがあります。

私の質問は次のとおりです。

  1. 最初の入力として「John」と入力すると、2番目のcin >>操作は入力を待機せず、宛先、つまり名前配列に何もコピーしません。宛先文字列を空に設定するだけでなく、2番目のcin>>が少なくとも改行またはストリームの終わりを転送することを期待していました。なぜこうなった ?

  2. 最初のcin>>ステートメントの入力として「JohnSmith」と入力した場合も同じことがわかります。2番目のcin>>ステートメントがスペースまたは「Smith」を宛先変数にコピーしないのはなぜですか?

プログラムの出力は次のとおりです。

ありがとう!!!

0 投票する
3 に答える
2041 参照

c++ - カスタムストリームマニピュレータとしての std::function

カスタム ストリーム マニピュレータを簡単に作成できるように、C++11 の機能を使用しようとしています。ラムダ関数をマニピュレータとして使用できますが、std::function<ostream&(ostream&)>.

煮詰めたコードは次のとおりです。

2 番目のcoutステートメントは次のように失敗します。

なぜこれが失敗するのですか?私は cygwin gcc 4.5.3 を使用しています。

私が尋ねている間std::function、効率の問題のために、私はどこでも使用することに夢中ではありません。しかし、私はラムダ関数を返す関数を書きたいと思っていますstd::function. たとえば、次のようなものは素晴らしいでしょう

...しかし、明らかに機能しません。動作する代替構文はありますか? 私はそれが何であるか想像できないので、私は立ち往生しているかもしれませんstd::function.

2 番目の質問に対する解決策があれば、最初の質問は意味がありません。


ありがとうございました。

定義operator<<(ostream&, std::function<ostream&(ostream&)>が役立ちました。私は Web ページを読み違えており、マニピュレータとしてostreamを持つ任意のオブジェクトを処理するのに十分スマートであるという印象を受けました。operator()私はこれについて間違っていました。さらに、lambda私が作成した単純なものは、おそらく、言われたとおり、単純な古い関数にコンパイルされただけです。実際、変数キャプチャーを使用してlambdaが単純な関数ではないことを確認すると、コンパイラーは失敗します。また、operator()定義済みのオブジェクトは (デフォルトでは) マニピュレーターとして扱われません。


さらなる更新: 以下のソリューションよりもわずかに堅牢なソリューションであることが判明しました。

このコードには余分なconst. プロジェクトで実際にソリューションを実装しようとして、これを発見しました。

0 投票する
2 に答える
616 参照

c++ - std :: wsはファイルの終わりでfailbitを発生させる必要がありますか?

std :: wsマニピュレータを使用してストリームから抽出すると、失敗ビットが発生する必要がありますか?次のコードでは、Clangでコンパイルされた(Xcode 4.5.1内の)プログラムが最終アサーションに失敗します。明らかs >> std::wsにEOFで失敗を引き起こします。それでも、GCC4.7.2はアサーションに合格します。どちらが正しい?

0 投票する
1 に答える
1343 参照

c++ - ユーザー定義のパラメータ化されたマニピュレータ

gcc 4.2.4 を使用しています。Schildt によると、「C++ The Complete Reference」、1995 年、ユーザー定義のパラメーター化されたマニピュレーターは次のように定義する必要があります。

imanip(mymanip, param) は、mymanip と mymanip の引数を含むオブジェクトを返すことになっていると思います。これは、オーバーロードされた operator>> が mymanip を呼び出すために使用する必要があります。ただし、これは機能しません。imanip が宣言されていません。

このバージョンも見つけました:

これも機能しません。

私の質問は次のとおりです。

  1. gcc 4.2.4 は、この詳細について ANSI C++ 標準に従っていますか? もしそうなら、この点に関して 1995 年以降、規格は変更されましたか?
  2. 独自のパラメータ化されたマニピュレータを定義するには、iostream コードを理解し、独自のオーバーロードされた imanip および operator>> 関数を記述する必要がありますか?
  3. 質問 2 への回答に関係なく、iostream コードを理解するための最善の戦略は何ですか? コードを読む必要がありますか?iostream の一部であるコンパイル済みライブラリの名前を調べるにはどうすればよいですか? 本を読むべきですか?
0 投票する
2 に答える
2116 参照

c++ - オーバーロード後の std::endl の 'operator<<' に一致しません

この質問を重複させて申し訳ありませんが、そこにコメントするのに必要な評判がなく、そこにある答えは私にとって説得力がありません.

ここで私は得る:

's.my_ostream::operator<<(((const std::string&)((const std::string*)(& str)))) << std::endl' の 'operator<<' に一致しません</p>

理由がわかりません。ostream で機能する場合は、my_ostream でも機能するはずです。このプログラムは動作します:

以下を出力します。

したがって、単純なオーバーロードではこのエラーは説明できません。また、ここではテンプレートを紹介しません。そのため、未定のテンプレート タイプ パラメータは重要ではありません。iostream のコードを読むのは非常に難しいことがわかっているので、ご意見をいただければ幸いです。