[過去ログ]
C++相談室 part165 (1002レス)
C++相談室 part165 http://mevius.5ch.net/test/read.cgi/tech/1698705458/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
87: デフォルトの名無しさん (ワッチョイ cf63-nyJS) [sage] 2023/12/24(日) 17:42:14.24 ID:foDTiHm90 質問なのですが自作クラスFooのストリーム出力演算子に引数付きのマニピュレータを追加したいのですが ↓こんなやつ Foo obj; cout << custom_setw(10) << obj; // 整数のベクトル的なオブジェクトobjの要素を幅10文字で出力 custom_setw()で与えた10という数値をつつがなくFooのストリーム出力演算子 std::ostream& operator<<(std::ostream& os, const Foo& obj) に渡すには一体どうすれば……orz http://mevius.5ch.net/test/read.cgi/tech/1698705458/87
88: デフォルトの名無しさん (ワッチョイ cf63-nyJS) [sage] 2023/12/24(日) 17:42:52.36 ID:foDTiHm90 グローバル変数渡しは最初に思いつくのですが、ostringstream os1, os2とFoo obj1, obj2に対して異なるスレッドで os1 << custom_setw(30) << obj1; // スレッド1 os2 << custom_setw(20) << obj2; // スレッド2 とかやったら詰むし std::setw()とか一体どうやってるんじゃ…… http://mevius.5ch.net/test/read.cgi/tech/1698705458/88
91: デフォルトの名無しさん (ワッチョイ cf63-nyJS) [sage] 2023/12/24(日) 19:34:37.93 ID:foDTiHm90 レス㌧クス、 >ストリームのオブジェクトが幅に関する情報を保存するデータメンバを持っていて、それを変更してる。 なるほど…… これはユザーの立場からはメンバの追加ができない領域なので、Fooの側にメンバを持たせることにしますか…… class FooWrp { const Foo& m_objRef; int m_nWidth; public: FooWrp(const Foo& obj, int width) : m_objRef(obj), m_nWidh(width) { } friend std::ostream& operator<<(std::ostream& os, const FooWrp& wrp) { ...(wrp.m_objRefの要素をwrp.m_nWidthに描かれている幅で出力する処理)... } }; http://mevius.5ch.net/test/read.cgi/tech/1698705458/91
92: デフォルトの名無しさん (ワッチョイ cf63-nyJS) [sage] 2023/12/24(日) 19:35:17.01 ID:foDTiHm90 // 使い方 Foo obj; cout << FooWrp(obj, 10); ダッサwwwwwwwwwwwwwwwwwww しかし、「たかが表示の整形」のために排他制御しつつmapを弄ったりTLSの利用を考えるのもアレなのでこれはこれで仕方が無いのか、orz http://mevius.5ch.net/test/read.cgi/tech/1698705458/92
94: デフォルトの名無しさん (ワッチョイ cf63-nyJS) [sage] 2023/12/24(日) 19:50:06.00 ID:foDTiHm90 Foo obj; std::string s = obj.str(10); // 10億ギガ文字 cout << s; 出力を完遂できるんかこれ…… http://mevius.5ch.net/test/read.cgi/tech/1698705458/94
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.781s*