- 1 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 16:10:55 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.68【環境依存OK】 pc12.2ch.net/test/read.cgi/tech/1253193779/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm codepad.org/ (コンパイルもできるし出力結果も得られるのでお勧め) ◆ソースのインデントについて 半角空白やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのも手ですが直接貼る場合は、 全角空白か に置換すると見栄えだけはよくなります。
- 982 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 12:57:09 ]
- ロベールの翻訳は分かりやすい
- 983 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 13:17:19 ]
- >>982
どこが翻訳なんですか?
- 984 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 16:38:20 ]
- 自作クラスをcoutで出力するにはどうすれば良いですか?
- 985 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 16:41:43 ]
- ここみたら無理そうなことがわかりました
諦めました www.jah.ne.jp/~naoyuki/Writings/ExtIos.html
- 986 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 17:00:01 ]
- そのページに書いてあるのは標準ストリームクラスの拡張であって、
君がやりたいのは標準ストリームクラスで自作クラスを出力することでしょ? まったくの別件だと思うよ。 君が勉強すべきなのは、演算子オーバーロード。
- 987 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 17:06:21 ]
- サンクス!です
- 988 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 17:27:13 ]
- これで出来ることはわかりましたが、char*からsize分だけ渡すにはどうすればいいですか。
std::ostream& operator<<(std::ostream& os, const ustring& x) { return (os<<*****): }
- 989 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:15:23 ]
- >>983
多くのプログラミング書籍が洋書からの翻訳であることを揶揄したジョークだろう よく書かれるコピペみたいなものだ
- 990 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:22:42 ]
- >>988
C/C++言語の仕様で\0まで出力だと思うので、任意の場所に\0を突っ込んでやればいいと思うよ。 バッファのオーバーランやアンダーランに気をつけて。
- 991 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:30:02 ]
- \0があっても標準出力へ渡したいんです… ustringはchar*とintのペアです。
STLは使えません。 あと、別の質問があるのですが。 クラスのメンバ関数で、 char* & operator [] ( int n ) { return &(ch[n]); } だとエラーになります。 char* & operator [] ( int n ) { static char*p=&(ch[n]); return p; } だと通るのですが 同時にアクセス来た場合に困ります。 衝突しない参照渡しはどうやればいいですか。STL stringみてもよくわかりません。
- 992 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:39:11 ]
- >>991
変数でもないものの参照を返したいとか訳分からん 値を返すんだと不都合なの?
- 993 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:39:28 ]
- >991
やりたい事は本当に operator[] で char* & を返す事なのか? ch って char* なんだよな? string と名のつく型で operator[] だったら普通 char& が返ると思うんだが。
- 994 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:43:27 ]
- 値で返すと
memcpy(buf, &str[0], size); が実行できないんです。 error メモリ上に配置されなければならない がでます。 static char*の参照返しだと出ません。
- 995 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:44:35 ]
- わかりました。間違えてました。>>993さんのご指摘通り間違えしてました。
- 996 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 19:05:39 ]
- >>988 たのみます
char* , intが与えられたときに標準出力( << )に\0を含む文字列を出力したいです。
- 997 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 19:31:43 ]
- >>996
その前に、どういうインタフェースにしたいのか考えれ。 operator<< をオーバーロードすると cout << yourclass << endl; のような書き方ができるわけだが、 char*とintの二つのパラメータを与えるなら そういう書き方はできなくなる。 それとも const char * operator()( int ) みたいなメンバを持たせて cout << yourclass( 文字数 ) << endl; とかけるようにでもするかい^^
- 998 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 19:37:28 ]
- stringは、string(ch, size)で、\0を含む文字列を
cout<<に渡せるじゃないですか。 この実装はどうやってるのかわかりたいです。
- 999 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 19:45:50 ]
- templateクラスのメソッドってnewしたら使われてなくても全部実体化しちゃう?
- 1000 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 20:03:01 ]
- >>998
コンストラクタの話とoperator<<の話がごっちゃになってるじゃないか^^
- 1001 名前:1001 [Over 1000 Thread]
- このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
|

|