問題タブ [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++ - マニピュレータは何らかの方法でストリーム タイプを変換しますか?
ostringstream
匿名を使用して生成しようとしていますstring
:匿名の文字列ストリームを使用して文字列を構築します
ただし、マニピュレータを使用すると、コンパイルできなくなったようです。
しかし、それはgcc 5.1 でも許可されていないようです:
prog.cpp: 関数内
int main()
:
prog.cpp:8:109: エラー:std::basic_ostringstream<char>::basic_ostringstream(std::basic_ostream<char>&)
const auto myString(static_cast<ostringstream>(ostringstream{} << setfill('!') << setw(13) << "lorem ipsum").str());
/usr/include/c++/5/iomanip:45:0 から含まれるファイル内の呼び出しに一致する関数がありません
: prog.cpp:1 から:
/ usr/include/c++/5/sstream:582:7: 注: 候補
std::basic_ostringstream<_CharT, _Traits, _Alloc>::basic_ostringstream(std::basic_ostringstream<_CharT, _Traits, _Alloc>&&)
[with_CharT = char
;_Traits = std::char_traits<char>
;_Alloc = std::allocator<char>
]
basic_ostringstream(basic_ostringstream&& __rhs)
/usr/include/c++/5/sstream:582:7: 注: 引数 1 から /usr/include/c++/5/sstream:565:7 への既知の変換はありませんstd::basic_ostream<char>
:std::basic_ostringstream<char>&&
注: 候補:
std::basic_ostringstream<_CharT, _Traits, _Alloc>::basic_ostringstream(const __string_type&, std::ios_base::openmode)
[with_CharT = char
;_Traits = std::char_traits<char>
;_Alloc = std::allocator<char>
;std::basic_ostringstream<_CharT, _Traits, _Alloc>::__string_type = std::basic_string<char>
;std::ios_base::openmode = std::_Ios_Openmode
]
basic_ostringstream(const __string_type& __str,
/usr/include/c++/5/sstream:565:7: 注: 引数 1 から /usr/include/c++/5/sstream:547:7 への既知の変換はありませんstd::basic_ostream<char>
:const __string_type& {aka const std::basic_string<char>&}
注: 候補:
std::basic_ostringstream<_CharT, _Traits, _Alloc>::basic_ostringstream(std::ios_base::openmode)
[_CharT = char
;_Traits = std::char_traits<char>
;_Alloc = std::allocator<char>
;std::ios_base::openmode = std::_Ios_Openmode
]
basic_ostringstream(ios_base::openmode __mode = ios_base::out)
/usr/include/c++/5/sstream:547:7: 注: 引数 1 からstd::basic_ostream<char>
への既知の変換はありませんstd::ios_base::openmode {aka std::_Ios_Openmode}
これは別の gcc ストリームのバグですか、それとも私がしていることは実際には違法ですか?
c++ - C++ 式の後続ストリーム マニピュレータの意味
各ペアの両方の式の違いは何ですか? これらの式の末尾の末尾の効果がわかりませんstd::dec
。
で、これcin
の間に:
この :
この間の、と同じ質問cout
:
この :
ありがとう !
c++ - カスタム istream マニピュレータの作成
istream
入力から 2 文字を読み取り、入力から 2 文字をスキップして、入力がなくなるまでそれを行うカスタム マニピュレータを作成したいと考えています。
たとえば、次のようなコードがあるとします。
skipchar
ユーザーが を入力した場合、マニピュレータはどこにあり1122334455
、str
が含まれている必要があります113355
。
これは私がこれまでに得たものです。このコードを適切に機能させるには、while ループ条件に何を入れるべきかわかりません。
どんな助けでも大歓迎です。
c++ - ユーザーが入力した文字列内の単語をカウントする
それで、宿題の最後の章の復習問題に取り組んでいます。
私の質問は、ユーザーが文字列の文を入力した場合、どのように単語数をカウントするのでしょうか? クラスでカバーされていなかった、またはクラスでカバーされるとは思いません。
文を要求し、getline を使用して文字列を読み取ることまではできましたが、入力をファイルに書き込み、同じファイルを開き、そのように単語をカウントする以外に、個々の単語をカウントするにはどうすればよいでしょうか?
c++ - 独自のマニピュレータを作成するには?
入力と出力用に独自のマニピュレータを書きたいとしましょう。
また
mymanip がしたいことは、入力から読み取った文字の大文字と小文字を切り替えて、結果を 1 つの文字列に割り当てることです。
したがって、「QwErTy」と入力すると、文字列に「qWeRtY」が表示されます。
これは 1 つの機能を持つ非常に基本的なタスクですが、マニピュレーターについてもっと学びたいと思っています。
誰かが手がかりを与えることができますか?
ありがとうございました。
c++ - カスタム マニピュレータは Visual C++ でコンパイルされますが、g++/clang ではコンパイルされません
QueuedLog
ログメッセージをキューに入れ、必要に応じてキュー内のすべてのログメッセージを挿入するロガークラスがありますstd::ostream
。endm
各ログ メッセージを分離するために、 と同様の方法で使用される と呼ばれるマニピュレータを作成しましたstd::endl
。たとえば、次のようなユース ケースがあります。
endm
コードは Visual C++ では問題なくコンパイルされますが、マニピュレータを使用しようとすると g++ と clang++ はコンパイルに失敗します。これは、(通常は別のヘッダー ファイルに存在する) の最小バージョンでありQueuedLog
、問題を示す小さな使用例があります。
または、この(おそらく過度に)単純化された例:
rextesterで 3 つのコンパイラすべてでコンパイルしようとしましたが、Visual C++ でのみ正常にコンパイルされます。
g++ で次のエラーが発生します。
error: ‘endm’ was not declared in this scope
clang++ からのエラー メッセージは次のようになります。
error: use of undeclared identifier 'endm'
Visual C++ では機能するのに、g++ や clang++ では機能しないのはなぜですか? g++/clang++ で修正するにはどうすればよいですか? このソリューションは、3 つのコンパイラすべてで同時に機能する必要はありません。g++ と clang++ で修正する方法を知りたいだけです。
c++ - std::left を引数として渡す
文字の位置が異なる可能性があるものを表示する機能があります。関数は次のようになります。
ただし、この関数をこのように呼び出そうとすると
次のエラーが表示されます
std::cout
なぜうまく渡すことができるのかわかりませんが、std::left
そうするのを拒否します。また、 とどうlvalue reference to type 'std::ios_base'
違うのlvalue reference to type 'std::ios_base'
ですか?
c++ - 列挙値を文字列として出力するマニピュレータはありますか?
列挙名の色を作成しました。そして、background_color
type color の変数を作りました。次に、青と仮定して、列挙値を割り当てます。background_color
次に、を使用して印刷したいと思いましたcout
。しかし、列挙型メンバーの対応する int 値を出力します。background_color
を文字列として出力するマニピュレータがあるかどうかを知りたかったのです。スイッチケースを使用してそうできることを知っています。cout
でもマニピュレーターを使ってこれを手に入れたかった。
1.Aではなく出力として青を印刷することを期待していました
c++ - C++ ストリーム マニピュレータを 1 つの変数にチェーンする
次のように、いくつかのストリーム マニピュレータを ofstream でチェーンしています。
代わりにこのようなことをすることは可能ですか?:
c++ - バッファを手動でフラッシュするには?
これは同じ質問ですが、適切に回答されていません。
コード
出力
ここでは、バッファにつながる出力ストリームの1文字のみです。そのため、バッファはまだいっぱいではなく、画面に出力が表示されます。バッファが自動的にフラッシュされることを意味します。
そのため、バッファが自動的にフラッシュされず、マニピュレータ フラグを使用する必要がある例を挙げてくださいflush
。