- 1 名前:デフォルトの名無しさん [2008/02/20(水) 12:33:41 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.48【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1202141921/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
- 532 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:23:55 ]
- >>530
犬のウンコの処理を考えたり に見えて delete unko;とか脳内で実行しそうになった
- 533 名前:デフォルトの名無しさん [2008/02/24(日) 01:28:09 ]
- >>523
pを確保しなくても、これでもいいはずですよね int main() { bin x; x.start = new char *; h(&x); printf("%s", *x.start); }
- 534 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:28:52 ]
- newしたらdeleteしとけよ
- 535 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:35:57 ]
- >>533
newしたものはdeleteしないといけないのが面倒だから、 使わずに済むなら避けるべき。
- 536 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:48:50 ]
- だから、newを捨てるところからはじめろって。
- 537 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:53:19 ]
- C及びC++を使いゲームを作成された方へ質問です。
再帰関数って便利ですか? もしよろしければ、メリットとデメリットを教えていただけないでしょうか? 自分の考えでは、 goto と同じ用に無理に使う必要はない機能だと思ってます。
- 538 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:54:37 ]
- 再帰関数については色々思うところがあるのだが、ゲームを作っているわけではないからなぁ。
- 539 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:58:18 ]
- 無理に使う必要は無いなぁ
メリットデメリットという問題でもない気がする
- 540 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:58:23 ]
- >>537
ポリゴン(ボーン)の操作で便利 でも、無理して使わなくてもおk
- 541 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:03:16 ]
- ボーン操作ってことは、データの読み込み時に便利ってことでしょうか?
- 542 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:09:18 ]
- 【環境】 MS WinXP/gcc 3.4.4 on cygwin
【ソース】 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6079.txt 【用途】 IRCクライアント(bot) 【起動方法】 $ ./a irc.tokyo.wide.ad.jp 6664 【動作の現状】 1.コマンドラインからサーバ名とポートを受け取り、ソケット作成、コネクション確立 2.サーバからのコネクションメッセージ受け取り 3.USER/NICKコマンドの送信 4.ウェルカムメッセージ、MOTDの受け取り 5.半角英数のチャンネル名へのJOIN ←ここで停止する 【質問】 ・Telnetで同じように接続すると問題なく接続→終了することができる(ISO-2022-JPだから文字化けするが正常) ・送受信周りがかなりいい加減なのでJOIN出来ないのはそこに問題があるのではないか? イレギュラーなことをやってますが、IRC板orスレというよりCネットワークプログラミング自体の問題かと考え こちらに質問させていただきました。よろしくお願いいたします。
- 543 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:13:01 ]
- >>541
typedef struct _D3DXFRAME { LPSTR Name; D3DXMATRIX TransformationMatrix; LPD3DXMESHCONTAINER pMeshContainer; struct _D3DXFRAME *pFrameSibling; struct _D3DXFRAME *pFrameFirstChild; } D3DXFRAME, *LPD3DXFRAME; 座標系の上に座標系があって、 さらにその座標系の上に座標系が… と繰り返すので、スタックを自前で管理するより 再帰処理にしたほうが楽というだけ (体-上腕-腕-手-指 のように繋がっていくので)
- 544 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:17:35 ]
- >>542
カンなので外してたら無視してくれ >for(i=0;i<=strlen(p);i++){ \0も送信してるが、いいのか? i<strlen(p) なんじゃない?
- 545 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:37:36 ]
- >>543
for分で体のパーツ数回してデータを読み取ってるんですが、 今は無理してそれを崩してまで使う機能ではないってことですね。 よく機能を理解して使えば楽になる物、ということですね。 答えてくれた方ありがとうございました。
- 546 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 03:26:15 ]
- >>542
メッセージの終わりを\n → \r\n に変えてみたらいけるかも
- 547 名前:デフォルトの名無しさん [2008/02/24(日) 03:33:50 ]
- >>530
俺はオナニーして発射した後、ティッシュで拭いてる時にコードが閃くよ。
- 548 名前:546 mailto:sage [2008/02/24(日) 03:56:01 ]
- あと、>>544と同じく\0の送信は不味いんでは?
\nでメッセージの終わりを判断してるとすると、サーバは次のメッセージの受信で 先頭に\0が入ってしまうんではないかと思う (2回目のメッセージが、"\0JOIN #ircclidev\n"になるんじゃないかな)
- 549 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 04:06:10 ]
- >>544,>>548
i<strlen(p)で解決しました。初歩的ミスもいいところだ・・・。 もう一つ質問があるのですが、(どちらかというとこちらが本題ですが) ISO-2022-JP(いわゆるJISコード)とShiftJISを相互変換するライブラリorサンプルを探しています。 検索してもなかなかしっくり来るものがなく、nkf経由だと上手くISO-2022-JPの制御コード (KI/KO=0x1B 0x24 0x42/0x1B 0x28 0x42)を取ることが出来ません。 RFCには、特にマルチバイト環境の規定は定められていませんが、日本語IRCサーバは ISO-2022-JPを使っているところが主流のようです。
- 550 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 04:12:53 ]
- >>542の修正版ソースです。一応日本語以外はちゃんと動く・・・はず
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6082.txt
- 551 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 05:11:02 ]
- >>549
iconvじゃだめかい?
- 552 名前:デフォルトの名無しさん [2008/02/24(日) 05:52:14 ]
- すんません。
VC++6.0からVisualStudio2008に移ったんですが、外観が変わりすぎててチンプンカンプン・・・ どこかVisualStudio2008 Exp の解説やってるページとかありませんか? dllすら読み込めぬ・・・。orz
- 553 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 06:11:51 ]
- Visual Studio2008スレにGO
- 554 名前:デフォルトの名無しさん [2008/02/24(日) 10:24:08 ]
- 自分でクラスを定義するときに、ポインタに対する演算は、定義しなくてもよいのでしょうか?
つまり、ポインタでも、int*とか、char*とかの型がありますが、例えば myclass*==int* とかやるとコンパイルエラーになります。でも、myclass1*==myclass2*は、==演算子も 定義してないのに、コンパイルできるし、ちゃんと動きます。 これは、どういう理由でできるんですか?というか、ポインタの比較をする演算子って どこで定義してるんでしょうか? 変な質問ですいません。
- 555 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:27:06 ]
- 継承関係があるんじゃない?
- 556 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:54:10 ]
- >554
規格上で「できる」と決められている処理ははコンパイラが勝手に処理してくれる、というだけ。 myclass1*==myclass2* は >555 の言うとおり myclass1 と myclass2 に継承関係があるんだろう。 この場合、暗黙の型変換が発生して同じ型になり比較できる、と決まっている。 で、規格で決められている以上のポインタに対する演算を、自前で定義する必要があるケースはまずない。
- 557 名前:デフォルトの名無しさん [2008/02/24(日) 10:55:39 ]
- >>554
違う型のポインタの比較はダメ int* a; double* b; a == b をやってみれば意味がわかるんじゃないかな?
- 558 名前:デフォルトの名無しさん [2008/02/24(日) 12:50:04 ]
- C++で配列を関数の引数にできますか?
- 559 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:52:24 ]
- 配列の参照か、配列のポインタか、配列要素のポインタならできます
配列自体は無理
- 560 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:52:27 ]
- ポインタじゃダメなのか?
- 561 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:53:21 ]
- >>558
できる template <size_t n> void func((&a)[n]) のように
- 562 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:53:39 ]
- 型がねえ
- 563 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:58:42 ]
- すまん忘れた
- 564 名前:デフォルトの名無しさん [2008/02/24(日) 13:14:21 ]
- >>559-563
ありがとうございます。 たしかにできませんでした。でも、 template <class T, int N> int func(T a[N]) { ... } こういう様に書いても(func()の引数に&を付けても付けなくても)、aは参照扱いになるようです。 aに対して変更を加えると、func()の呼び出し側の元配列にも変更が反映されました。
- 565 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:20:12 ]
- そりゃaはポインタなんだから。
- 566 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:32:04 ]
- >>564
aは参照でなくてdecayされるからポインタだろ
- 567 名前:デフォルトの名無しさん [2008/02/24(日) 13:36:59 ]
- >>565-566
そうか。ポインタですよね。 ポインタをコピーして、その先まで複製してくれるのはありえないですよね。 ありがとうございました。
- 568 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:50:24 ]
- 構造体かクラスでラップしとけばいい。
boost::array を使うとか。
- 569 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:28:53 ]
- C++で乱数を扱う為のクラスとか関数はありますか?
rand/srand使うしかないですか? rand/srand使うとしたら、シードによく現在時刻使いますが 現在時刻を取得する方法はtimeしかないですか? ++らしい方法があれば教えてください。
- 570 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:30:06 ]
- MT法のインラインアセンブラ版がどっかにころがってたきがする
- 571 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:31:57 ]
- boost使うか
www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/mt.html ここから持っていけばいいんじゃね
- 572 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:32:08 ]
- >>569
Boost.Random
- 573 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:06:58 ]
- javascriptではalert("文字列"+123)
という風に文字列と数字を一緒にメッセージ表示出来ましたが、 C++で文字列と数字を一緒にメッセージ表示させるにはどうしたらいいでしょうか? MessageBox(NULL, "文字列"+123, "test", NULL) というのは出来ませんでした。
- 574 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:09:11 ]
- >>573
JavaScript同様、文字列を連結してから表示すればいい。
- 575 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:19:27 ]
- >>574
char msg[20] = "文字列"; char tmp[10]; itoa(123, tmp, 10); strcat(msg, tmp); MessageBox(NULL, msg, "test", NULL); こんな感じですか? メッセージ毎にこのコードを書くのも面倒臭いのと、 いつも "文字列"+数字 の組み合わせと言うわけでもなく 数字+"文字列"+数字+"文字列" という事もあるため 自作関数でmsgbox(char*, int){}という決め撃ちではやく、 文字列や数字を混同で表示できる方法はないかと考えています。
- 576 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:20:07 ]
- お願いします。C言語初心者なんですが、
ソース内に日本語を入れるとエラーになるんですが、 どこをどうすればいいのでしょうか? 超初心者です。よろしくお願いします。
- 577 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:21:41 ]
- × ああああ
○ //ああああ
- 578 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:22:14 ]
- ソースから日本語を消す
- 579 名前:576 mailto:sage [2008/02/24(日) 17:27:51 ]
- 説明へたですいません。
/* hello02.c */ #include <stdio.h> int main() { printf("今日はよい天気です。\n"); printf("明日もよい天気でしょう。 \n"); return 0; } これなんですけど…
- 580 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:30:51 ]
- >>576
どんなエラー?
- 581 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:34:42 ]
- >>570-572
ありがとうございます、Boost 試してみます。 手元の mingw にはなさそうなので、まずはgooって Boost 環境揃えてみますね。 >>576 ・ソースの文字コードを変えてみる ・処理系を変えてみる
- 582 名前:576 mailto:sage [2008/02/24(日) 17:36:23 ]
- 本当にすいません。
普通に表示されました。 なんか間違ったやりかたしてたみたいです… 申し訳ないです。
- 583 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:41:12 ]
- >575
そのためのsprintf、とだけいっておくけど。
- 584 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:48:41 ]
- >>583
sprintfだとメッセージウィンドウは生成されないですよね? 外見としてはMessageBoxの中身に数字や文字列を表示している様な方法がいいんです。
- 585 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:54:21 ]
- sprintfのsは何の意味か知っているか、とだけ言っておくけど。
- 586 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:55:05 ]
- >>584
ならsprintfしてMessageboxにいれる処理の関数つくればよくね?
- 587 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:56:41 ]
- 要はフォーマット→MessageBox()と
二段構えになるのが嫌、というだけの話とエスパー vsprintf()使って自作ラッパー関数でも書くんだな
- 588 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:58:37 ]
- >>584
boost::lexical_cast を使うと幸せになれると思う
- 589 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:04:51 ]
- >>585-588
失礼しました。printfと勘違いしてました。 sprintfだと文字列に格納できるんですね。 boostは自分にはまだ早そうなので(正規表現使えるのは魅力的ですが)、sprintfでやってみます。 ありがとうございました。
- 590 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:05:19 ]
- >>588
効率が悪いのが難点
- 591 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:07:23 ]
- >>588
俺も最初それ思いついたけど、連結する数値がたくさんあると見苦しくなるから std::stringstreamに流し込んで取り出す方がいいんじゃないかなあ。
- 592 名前:デフォルトの名無しさん [2008/02/24(日) 18:45:34 ]
- DLLの読み込みで、コンパイラによって失敗します
序数で指定しても動きません どのような理由でしょうか? VC++だと動かないですが、BCCとDMCで動きます
- 593 名前:デフォルトの名無しさん [2008/02/24(日) 18:47:43 ]
- HINSTANCE hd=LoadLibrary("*****.dll");
FN = (fnc) GetProcAddress(hd, (LPCSTR)4); //序数での指定 このような記述はWindowsXPなら万能ではないんでしょうか?
- 594 名前:デフォルトの名無しさん [2008/02/24(日) 18:50:46 ]
- 訂正
読み込みはしますが、実行時にエラーになります 序数がずれるのかも・・と思い全ての番号で試したのですがだめです
- 595 名前:デフォルトの名無しさん [2008/02/24(日) 18:52:47 ]
- 継承について教えてください
CFooから派生したCFooEx0、CFooEx1、CFooEx2、CFooEx3があるとします。 そして、それぞれCJissou0、CJissou1、CJissou2、CJissou3に派生してるとします。 その上、CJissou0、CJissou1はIHoge0を、CJissou2、CJissou3はIHoge1を実装しているとします。 図にするとこんな感じ。 CFoo─CFooEx0┬CJissou0 IHoge0┘ CFoo─CFooEx1┬CJissou1 IHoge0┘ CFoo─CFooEx2┬CJissou2 IHoge1┘ CFoo─CFooEx3┬CJissou3 IHoge1┘ CFooとCFooEx〜は弄らないとして、IHoge〜のインターフェイス関数をCJissou〜に実装します。 で、マネージャー的な物例えば、std::vector<CFoo *> vecにそれぞれの実態を入れて、 CJissou〜の関数を呼びたいのですが呼ぶ際には、 dyanamic_cast<CJissou0 *>(vec[0])->Test();見たいな事をしないといけないと思います。 でもそういう呼び出しだとIHoge〜も意味が無くなってしまうし、数が多くなると厳しくなります。(IHoge〜は数個) だから、dyanamic_cast<IHoge0 *>(vec[0])->Test();//エラー 見たいな呼び方をしたいのですがどうすればいいのでしょうか?
- 596 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:59:37 ]
- >>595
そもそもそのような継承にしてる理由は?
- 597 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:59:59 ]
- >>595
CFoo のメンバ関数ならキャストは要らないはず。 IHoge〜 に意味が無くなると言うが、こっちからしたら CFoo や vec の使い方も ひっくるめて最初からその継承関係の意味がわからん。
- 598 名前:595 mailto:sage [2008/02/24(日) 19:06:57 ]
- えっと、まあ、CFooがMFCのCViewで、CFooEx〜がCTreeViewとかCListViewなのでどうした物かと質問しました・・・。
- 599 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:10:28 ]
- なんでvector<IFoo>とかにしないわけ?
あるいは、virtual Test()をもつ何かインターフェースに。
- 600 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:18:44 ]
- CFooEx の状態で持てないのなら
ダウンキャストすることになるだろうな。
- 601 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:05:03 ]
- >>590
もう自前でパースしてるよ
- 602 名前:592 [2008/02/24(日) 20:05:24 ]
- 最適化オプション関係でした
- 603 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:10:05 ]
- >>601
車輪の再発明
- 604 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:25:22 ]
- boostが?
- 605 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:29:54 ]
- ごめん勘違い
- 606 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:58:50 ]
- 文字コード?jisコード?って覚えるべきもの?
- 607 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:06:12 ]
- 必要になったときに表を見れば十分
- 608 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:06:13 ]
- >>606
全てのJIS漢字のJISコードなんて、そうそう覚えられるもんじゃないと思うが。
- 609 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:14:12 ]
- class Piyo{
〜 }; class Hoge{ public: void hoge(Piyo[][256]); }; void Hoge::hoge(Piyo[][256] piyo){ 〜 } こんな実装をした時に、Hoge::hogeのpiyoを書いておくと'Piyoは未定義のシンボル'と怒られてしまいます。 仮引数をPiyo[][256]だけにすればコンパイルは通りますが、どう使えというのか・・・といった感じです。 コンパイラはBCC5.5を使っています。クラスの2次元配列をできれば「参照」で渡したいのですが、 どうすればいいんでしょうか?
- 610 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:15:36 ]
- 単に書き方がおかしいだけだ。
void Hoge::hoge(Piyo piyo[][256]) { しかもこれいわゆる参照渡しの挙動をするが、 正確にはポインタ渡しだし。
- 611 名前:609 mailto:sage [2008/02/24(日) 21:29:18 ]
- うわ・・・。確かにおかしな書き方してた・・・。
自分でもドン引きです・・・。ありがとうございました
- 612 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:16:37 ]
- streaming.linux-magazin.de/en/program_fosdem.htm
cmakeについてのリアルタイム講演が聞けるそうな
- 613 名前:デフォルトの名無しさん [2008/02/24(日) 23:20:24 ]
-
ReadFile(fp , &(buf[N]) , 1500 , &sz , NULL); でエラーで止まります bufは十分にとってあります なぜでしょうか
- 614 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:24:57 ]
- >>613
bufの宣言がどうなっているかにも拠るが、&(buf[N])をbufにしてみろ。 それで巧くいくなら、お前は馬鹿だ。
- 615 名前:デフォルトの名無しさん [2008/02/24(日) 23:31:32 ]
- 位置を変えてループして読もうとしてるんです bufにすると上手くいきますが前のデータが消えます
原因不明ですが、変数の位置変えたらエラーでなくなり一応うごくようになりました
- 616 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:34:06 ]
- たまたま動いてるだけくさいな。
単純にバッファオーバーフローしてるだけじゃないのか?
- 617 名前:デフォルトの名無しさん [2008/02/24(日) 23:36:56 ]
- メモリ関係のエラーみたいです また止まりました
別のところから変更しないと直りそうにありません 設計やり直してきます
- 618 名前:デフォルトの名無しさん [2008/02/24(日) 23:48:58 ]
- coutやnewの多重定義ってどうやるのかわかりません できますか
- 619 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:51:19 ]
- >>613
char buf[NMAX*1500] なら、&(buf[N*1500]) char buf[NMAX][1500]; なら、&(buf[N][0]) char *buf[NMAX] for(...) buf[N] = malloc(sizeof(char) * 1500); なら、buf[N]
- 620 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:52:38 ]
- cout の多重定義??
- 621 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:55:54 ]
- <<のオーバーロードに違いない
- 622 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:56:41 ]
- ostream& operator<<(ostream& ostr, const Hoge& hoge) {
ostr << hoge.str(); } みたいなやつか。
- 623 名前:デフォルトの名無しさん [2008/02/25(月) 00:07:21 ]
- stringは連続していますか? memcpyとかはできますか?
- 624 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:08:24 ]
- なんでstringにmemcpyしたがる人が多いんだろう。
- 625 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:09:43 ]
- stringにmemcpyはまずいんじゃね
- 626 名前:デフォルトの名無しさん [2008/02/25(月) 00:10:45 ]
- string s="9999999999";
strcpy( &s[5], "000"); は正しいですか
- 627 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:14:03 ]
- 詳しいことわすれたけど、s[i]で文字を取得できるならできるんじゃね?
やった後、stringオブジェクトは壊れるとおもうけど
- 628 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:15:06 ]
- この日本語不自由そうなとこが同一人物くさい
- 629 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:15:58 ]
- >>623
規格ではそんな保障はされていません。
- 630 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:17:13 ]
- >>627
あっ嘘、s[i]で取得できてもできないと思う 置き換えたいなら、replaceを使いなさい
- 631 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:17:23 ]
- >626
std::stringのことなら、正しくない。
- 632 名前:デフォルトの名無しさん [2008/02/25(月) 00:21:59 ]
- これが動くのですが、stringはchar*の拡張であることは保証されていませんか?だめな例はありますか
int main(){ string str="9999999999"; char *pointer=&str[5]; memcpy( pointer, "000", 3); str+=(string)"add"; cout<<str; return 0;}
|

|