- 1 名前:デフォルトの名無しさん [2007/09/27(木) 11:39:04 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.42【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1188748806/l50 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
- 285 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 22:39:10 ]
- こんな書き方も出来るかもー!!
printf("%*s", 10, "hogehoge"); printf("%*s", 12, "hogehoge");
- 286 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 22:40:16 ]
- #define FMT "12"
printf("%" FMT "s", "hogehoge"); とか
- 287 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 22:47:38 ]
- std::mapでキーワードを予め指定しておいた予約語以外は受け付けないように出来ますか?
"hoge""hage""hoji""haji" // 何らかの方法で指定した予約語 std::map<std::string , std::string> strmap strmap["hoge"] = "これは成功する"; strmap["miss"] = "これは失敗する"; こんな感じで
- 288 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 22:49:15 ]
- C++で下みたいな方法ってよろしくないですかね・・・
配列に入れた座標データを,オペレータオーバーライドを使って計算したいんですが 要素毎にコンストラクタ呼び出しは冗長になるので 問題点が判らないので指摘をお願いします #include <stdio.h> float data[] = {1., 2., 3., 4., 5., 6.}; class Data { public: // use default ctor float x, y, z; Data& operator+=(const Data &right) ....省略... }; int main() { Data *ptr; ptr = reinterpret_cast<Data*>(data); printf("%f %f %f\n", ptr[0].x, ptr[0].y, ptr[0].z); printf("%f %f %f\n", ptr[1].x, ptr[1].y, ptr[1].z); return 0; }
- 289 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 22:53:53 ]
- >>287
勝手に追加されちゃうから無理じゃね? std::mapを包含したクラス作ってインデクサの中で例外投げるとかしか思いつかない
- 290 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 23:00:43 ]
- >>289
stringの方をラッピングするのもアリじゃね? 書く量としてはその方が少なくなりそう。
- 291 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 23:00:58 ]
- >>289
そうですか、残念 ありがとうございました
- 292 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 23:15:10 ]
- >>288
>コンストラクタ呼び出しは冗長 といってもinlineであれば実質気にするほど変わらない気がする。 Dataがfloatピッタリ3つ分で収まるという保証があるのだろうか?データメンバーが後から追加されたりする可能性は? virtualな関数をもつとサイズが変わったりする様だし、危険を伴う気がします。
- 293 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 23:36:17 ]
- assert(sizeof(Data) == sizeof(float[3])); を書いとくとか
- 294 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 23:43:21 ]
- >>292,293
Thx 対象がRAWなベタデータなので簡素に出来ないかと思ったのですが 素直な書き方をした方がよさげですね
- 295 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 03:46:16 ]
- >>284-286
フォーマットって普通に文字列なんだな。 >>285の方法は知らなかった。参考にさせて貰います。 色々試してみたけど、やりたいこともこれで出来そう。 ありがとね。
- 296 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 03:51:51 ]
- >>288
× オーバーライド ○ オーバーロード
- 297 名前:デフォルトの名無しさん [2007/10/06(土) 16:19:13 ]
- wcout はバグがありますか?
wcout を使うのは避けてますか? WindowsXP Home + BCC
- 298 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 17:10:25 ]
- char *hogehoge(){
return "hogehoge"; } 文字列リテラルの場合、変数と違って関数を抜けても有効なままなんでしょうか?
- 299 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 17:11:10 ]
- 有効なままです
- 300 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 17:11:56 ]
- リテラル返すならconst char*にした方がいいかも
- 301 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 18:41:45 ]
- inline const char *&
- 302 名前:デフォルトの名無しさん [2007/10/06(土) 18:45:41 ]
- &はイラネーだろ
なんか違うのか?
- 303 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 18:47:11 ]
- inline const const char *&
- 304 名前:デフォルトの名無しさん [2007/10/06(土) 18:52:50 ]
- C++超初心者です。
今まで動いていたのに、今日コンパイルすると、 (1029) invalid format string conversion と表示されてしまいます。 原因が分からず、どのように変えたらよいのかも分かりません。 ご教授宜しくお願いいたします。 すごく長いプログラムなので、関係してそうなところだけ書き込んでます。 FILE *ottq; ottq = fopen("ottq.dat", "w"); double chir,l l=20.05e-3; chir=0.0e-5; fprintf(ottq, "l(m)=\t%le\t\n",l); fprintf(ottq, "chir(%)=\t%le\t\n",chir*100.0); ←1029行目ここです。 fclose(ottq);
- 305 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 18:54:02 ]
- %→%%
- 306 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 18:54:48 ]
- >>304
エラーメッセージのまんまだろ。
- 307 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 19:02:37 ]
- こえぇ
お前みたいなのが扱うもんじゃねぇだろ
- 308 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 19:09:25 ]
- 変数名きめぇwwwww
|

|