問題タブ [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++ - クラスのカスタム マニピュレータ
引数付きのストリーム マニピュレータを作成しようとしています。私は3つのintのCDate(年、月、日)を持つクラスを持っています。したがって、マニピュレータを作成する必要がありdate_format(const char*)
ます。例:
出力は次のようになります。
私はそれを使用する必要があると思います
しかし、方法がわかりません。
c++ - C++ マニピュレーター
私はC++の学習を始めました。この言語は素晴らしいと思いますが、学習過程で困惑することはほとんどありません。この例では:
この例では、なしsetiosflags(ios::...)
で入力しただけでプログラムが同じことを行うのに、なぜ全体を入力するのでしょうか?showpoint
setiosflags
2 番目の質問は簡単です。次の場合:
int
後で とは異なる値に変更する場合、なぜ の値を定義するの0
でしょうか?
c++ - テンプレート、'out << "("' の 'operator<<' に一致しません
テンプレートの << 演算子をオーバーロードしようとしていますが、このエラーが発生しています。
私が達成しようとしているのは、オーバーロードされた演算子 << です。これは、開き括弧、「、」で区切られたすべてのタブ項目、および閉じ括弧を 'out' に提供します。
ここに私のコードの一部があります:
そして最悪の部分は、ビルド ログに 230 行のエラー行が表示され、この時点で少し混乱していることです。
c++ - ostream を操作する関数を呼び出す場合、括弧は必要ありません。C++
かっこなしで関数を呼び出すことはできませんが、次のソース コードがあるとします。
左シフト演算子のオーバーロードはありませんが、test(ostream& os)
関数内で関数cout
を呼び出すmain
場合、括弧は必要ありません。私の質問はなぜですか?
c++ - 標準 C++ iostream マニピュレータの状態をポーリングできますか?
特にアプリケーション クラスで、iostream << 演算子のオーバーロードを記述する場合、そのストリーム オブジェクトで有効な標準マニピュレータに基づいて、そのオーバーロードの動作を変更することが望ましい場合があります。<< オーバーロードの実装内からストリームの標準マニピュレータの状態をポーリングできますか?
たとえば、
~とは異なる振る舞いをする
違いを超えて、<< のカスタム オーバーロードは、その実装でメンバー << に引き継がれている可能性があります。
iostream のマニピュレータの状態をポーリングできる場合、これはどのように行われますか? また、マニピュレータの状態を同様にポーリングできるように、カスタム マニピュレータを実装する人は何をすべきでしょうか?
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 ストリームのバグですか、それとも私がしていることは実際には違法ですか?