1 名前:デフォルトの名無しさん [2008/03/30(日) 01:50:26 ] エスケープシーケンスやWin32APIなどの環境依存なものでもOK。 ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.50【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1204124447/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
496 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 19:38:16 ] まさにstringとwstring
497 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 20:08:28 ] >>493 つボラギノール
498 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 21:56:33 ] >>495 あり。
499 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 21:59:56 ] ありあり。
500 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 22:04:32 ] ありありありあり。
501 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 22:05:12 ] ありが十匹で
502 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 22:14:19 ] さよならだ
503 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 22:23:50 ] アリーヴェデルチ
504 名前:476 mailto:age [2008/04/08(火) 22:28:39 ] >>478 様 ですよね、失礼しました; >>484 様 エラー仕様を作ろうとしたのですが、 【整数の場合最大8桁までを有効とし、9桁以降を無視する。 負数の場合は、最大9桁までを有効とし、10桁目以降は無視する。】とあり、 【『−』のみ、または改行のみ入力されたらエラーメッセージを表示し、終了】 というのもあるので、 エラーとしては if(a[0]=='\n') if(a[1]=='-' && a[0]=='\n') みたいなのを使えばいいのかなぁ、程度で考えてるのですが、 どこに入れればいいのかなどイマイチ判らないのです;
505 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 22:34:19 ] ひょっとしてその数え方だと、「-1」は2桁なのか?
506 名前:476 mailto:age [2008/04/08(火) 22:53:28 ] >>505 私的にはそういう風に考えてます;
507 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 22:54:05 ] >>486 なるほどー例外ですか。それは思い浮かばなかった。 newしたときの初期化の処理が無駄だったりするのかとか当時考えたのを思い出した。
508 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 23:02:41 ] >>504 whileを抜けて >if(a[0]=='\n') if(a[1]=='-' && a[0]=='\n') の場合にreturnで終わればOK returnの前にprintfで適当にエラー出せば目的のものになるだろ。 >どこに入れればいいのかなどイマイチ判らないのです; どこに入れてダメだったんだ?
509 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 23:09:47 ] classのなかにnamespaceは作れますか?
510 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 23:19:28 ] muri
511 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 03:14:20 ] 質問なのですが、(VC++ 2008 EE を使用しています。) 以下のコード。 COORD coord; HANDLE hConsoleStdOut = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hConsoleStdOut, coord); は、<windows.h>をインクルードして使える、というのは判断できますが、 これはwindowsプログラミングなのでしょうか? WinMain()関数も無いし、DOSで表示されるのですが、 こういったコードの総称は何と呼ばれているのですか? 説明下手で申し訳ないです。
512 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 03:17:27 ] WindowsのAPIに依存してるならどう考えてもWindowsプログラミングだと思うが…。
513 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 03:39:45 ] WindowSystem(≒GUI)プログラミングではないが、 (MS-)Windowsプログラミングだな。 ついでに言えば、コンソールウィンドウはDOSではない。
514 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 04:02:03 ] >>512 >>513 ありがとうございます。 この「COORD coord;」や「HANDLE」の意味が解らず、 じゃあ総称が判ればネットで検索できる、と思い至ったのですが、 ネットを見ても、C言語による(MS-)Windowsプログラミングが掲載されていないんですよね。 はぁ。。。
515 名前:デフォルトの名無しさん [2008/04/09(水) 05:19:59 ] >>514 日本語訳は無いけどMSDNに載ってるよ。
516 名前:Alexander The Great WAS ALBANIAN, the PROOF by Flamuri [2008/04/09(水) 06:53:32 ] www.youtube.com/watch?v=YHmV_1nXpX8
517 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 07:30:25 ] >>507 ちゃんと delete すれば問題ない。 例外を一旦コンストラクタ内でキャッチして delete するのもいいが、 スマートポインタに入れておけばあとはデストラクタが勝手に何とかしてくれる。 コンストラクタ内で例外が発生した場合に呼ばれないデストラクタは 構築中のオブジェクトのデストラクタだけだからね。 既に構築されたオブジェクトのデストラクタは全て呼ばれる。 例えば基底クラスのデストラクタとか 構築されたメンバ変数のデストラクタとかは全て呼ばれる。 new に関して気をつける必要があるのは事実だけど、 使っていけないってことはあり得ない。 まあ、初心者は使わない方が無難ってこと程度の話じゃないのかな。
518 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 09:01:29 ] いいえ、newを生で使っている人はちゃんとスキンをつけるようにしてください。
519 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 09:26:43 ] newに限らず例外を投げる可能性のある関数をコンストラクタ内で 呼び出すときはstack unwindを考えて対応する。
520 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 09:32:36 ] コンストラクタ内でnewが例外吐いたのをキャッチしたとして、 そのあと何をすれば良いのですか?
521 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 09:38:26 ] >>520 ケースバイケース スワップが頻発してるなどメモリ不足でシステムがヤバイ状態なら 終了してシステム全体のシステムの再考。 そのエラーを無視してでも少しでも長く生き続ける必要が条件なら ログにでも吐いて続行。
522 名前:デフォルトの名無しさん [2008/04/09(水) 11:47:43 ] VC++2008EE ListBoxの1行削除ができたので、今度は削除前に メッセージボックスを出して見ようとしたのですが、 エラーがものすごい数出てしまいました。 System::Windows::Forms::DialogResult result; result = MessageBox::Show("削除しますか?","DELETE CHECK",MessageBoxButtons::YesNo); Debug::WriteLine(result); if(result != System::Windows::Forms::DialogResult::Yes)){ return; } if文全体を削除すると問題なく動作し、 また、出力ではYes,No確認できるので、 if文のSystem::Windows::Forms::DialogResult::Yesが、 問題なのかと思い、"Yes"とかにしてみたのですがやはりエラーが出てしまいます。 これはなぜエラーが出てしまうのでしょうか
523 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 11:56:41 ] >>519 それコンストラクタ関係ないだろ。
524 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 12:00:08 ] >>522 それ.netじゃん AfxMessageBoxかAPIのMessageBox使うべし
525 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 12:03:48 ] >>520 コンストラクタ内で catch なんて書かないでいいように RAII を徹底したほうがいい。
526 名前:デフォルトの名無しさん [2008/04/09(水) 12:14:47 ] >>524 ひと目でわかる Microsoft Visual C++ 2008 アプリケーション開発入門 という本を読みながらやっていて、 本書はC++/CLIで書いてある。とあるので、たぶん.netというやつだとおもいます。 この本の通りにやるとエラーが出てしまい、 エラーの内容見てもよく分からなくて、 いろいろ試してたのですが、結局原因が分からず聞いてみました。 この本で使っているMessageBoxにはなにか問題があったりするんでしょうか
527 名前:デフォルトの名無しさん [2008/04/09(水) 12:21:41 ] >>526 C++/CLIてのはC++でなんとか.net使いましょうよ・・・っていう仕様 .netだけならC#の方がいいし、速度的にC++ならC++/CLIしないでMFCかAPI使った方がいい
528 名前:522 [2008/04/09(水) 12:30:18 ] 申し訳ありません。もの凄く下らないミスでした。 if(result != System::Windows::Forms::DialogResult::Yes)){ かっこが一つ多かったです・・・スレ汚しすみませんでした。 >>527 うう、本まで買って気合い入れてしまったため再スタートは辛いです。 とりあえずこの道進んで、あとから徐々に方向転換してみます。 ありがとうございました。
529 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 12:33:15 ] >>528 C++/CLIなら↓の方で聞いた方がいいよ C++/CLI part3 pc11.2ch.net/test/read.cgi/tech/1206447234/
530 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 15:29:32 ] >>528 甘いな。俺は最初どの本買ったらいいかわかんなくて結局3冊目まで買ったぞ
531 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 15:36:05 ] MFCってまだ使われてるのか?
532 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 15:44:23 ] >>531 きみのPCのMFC関連のDLL等を全て削除して使用してみればきみの環境での依存度が分かる
533 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 15:46:40 ] >>532 滑ってるよ
534 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 15:52:50 ] マジレス
535 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:07:16 ] MFC関連のDLL、スタティックリンクするから無くても動いちゃうよ (俺のアプリは)
536 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:14:37 ] CString m_combo = "notepad.exe"; WinExec((LPCSTR)(LPCTSTR)m_combo,SW_SHOW); これアプリが起動しないんですけどなんでですか
537 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:23:00 ] LPCTSTRをLPCSTRに変換しているのが限り無く怪しい。 LPCTSTRを引数に取るShellExecuteか何かを使え。
538 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:30:01 ] WinExecが好きなんですけど変換は不可能ですか?
539 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:33:34 ] なら(LPCSTR)(CStringA)m_comboでどうだ。 あと、引数の少なさなら<tchar.h>の_tsystemがいいぞ。
540 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:35:33 ] っていうかWinExecはdeprecatedな扱いのAPIのような気がする。
541 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:37:24 ] struct hoge_a{ int a; int b; }; struct hoge_b : public a{ int c; int d; }; としたとき、hoge_aのメンバのメモリ上の並び順はabとなるのは保証(規定)されていると どこかで見た記憶があるのですが、hoge_bの場合、abcdとなることは保証されるのでしょうか?
542 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 17:54:09 ] >>539 動いたwお前すごいわ どこにも乗ってなかったぞこんなの
543 名前:デフォルトの名無しさん [2008/04/09(水) 18:27:43 ] srandのseedが同じ場合、マシンやOSが変わっても同じ乱数を発生させることができるのでしょうか?
544 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:32:25 ] >>543 No
545 名前:デフォルトの名無しさん [2008/04/09(水) 18:42:27 ] そうすると何に依存するのでしょうか? コンパイラですか?それともOSですか? AMDとintelのようにCPUが変わっただけでもダメですか?
546 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:44:58 ] libcの実装次第? 時間と空間を使えばかなりランダムになりそうだけどなぁ。
547 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 19:10:37 ] >>543 移植性を考えるなら同じ種で同じ乱数列の出力を保証するにはライブラリに頼らず乱数発生器も実装してしまう
548 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 19:46:10 ] C++について質問なのですが、 オブジェクトを作らずにメンバ関数を呼び出すことは可能でしょうか。
549 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 19:49:19 ] 静的メンバ関数なら。
550 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 19:54:24 ] >>548 できる。 struct a{ void f(){} }; reinterpret_cast<a*>(NULL)->f();
551 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:06:20 ] なるほど。勉強になりました。 レスありがとうございました。 #include <stdio.h> class A { public: static A* make_obj(void); void my_puts(void){ puts("Hello\n"); } }; A* A::make_obj(void){ A* a = new A; return a; } int main() { A* a = A::make_obj(); a->my_puts(); return 0; }
552 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:12:24 ] >>550 やめなさい
553 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:36:54 ] >>551 わかってると思うけど生ポではなくスマポに入れて返しとけよ
554 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 21:09:35 ] using namespace 〜; は取り消せますか?
555 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 21:16:28 ] 永遠に取り消す事が出来ない呪いです。 using は計画的に。
556 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 21:24:07 ] namespaceをusingすると、そのnamespace内のusingまで見えてしまうのには泣く。意味ねーじゃん
557 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 21:27:35 ] だからヘッダにusing書いちゃ駄目ってママ言ったでしょ
558 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 21:30:57 ] >>550 staticメンバ関数が無い時代の苦肉の策ですなあ。 ただ非静的メンバーは参照できない。
559 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 21:31:50 ] turboPascalのusing見たいな使い方したかったのに。
560 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 00:22:01 ] VC++ 2008 EE でWindowsアプリケーションを作成したいのですが、 そのまま<windows.h>をインクルードしてもエラー表示なので、 どのような設定が必要なんですか?
561 名前:デフォルトの名無しさん [2008/04/10(木) 00:24:06 ] >>548 なんのためのメンバ関数なんだか。
562 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 00:33:29 ] >>561 いや、他人の書いたコードを解読してるんだ。。
563 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 00:39:03 ] >>560 [ファイル]-[追加]-[新しいプロジェクト] [Visual C++]-[Win32]-[Win32プロジェクト]-[プロジェクト名]-[OK] [次へ]-[Windowsアプリケーション]-[■空のプロジェクト]-[完了] [ソースファイル]-[追加]-[新しい項目] [Visual C++]-[コード]-[C++ファイル]-[ファイル名]-[追加]
564 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 01:46:59 ] >>563 ありがとうございます。3行目まではうまく設定できたのですが、 4行目の「ソースファイル」?が何を指しているのかわからず、 そのまま5行目の作成を行いました。 結果はやはりビルドエラーです。 コードは以下です。 LRESULT CALLBACK WindowProc(HWND,UINT,WPARAM,LPARAM); /* アプリケーションエントリーポイント */ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR CmdLine, int CmdShow) { //処理 return ; } /* ウインドウプロシージャ */ LRESULT CALLBACK WindowProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam) { //処理 } return DefWindowProc(hwnd,message,wparam,lparam); }
565 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 01:50:01 ] エラーの内容は?
566 名前:デフォルトの名無しさん [2008/04/10(木) 01:54:31 ] ファーストへの悪送球。
567 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 01:54:45 ] 1>------ ビルド開始: プロジェクト: C800, 構成: Debug Win32 ------ 1>コンパイルしています... 1>MJ_1.cpp 1>.\MJ_1.cpp(26) : error C2440: '=' : 'const char [6]' から 'LPCWSTR' に変換できません。 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 1>.\MJ_1.cpp(41) : error C2664: 'CreateWindowExW' : 2 番目の引数を 'const char [6]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 1>C800.cpp 1>.\C800.cpp(28) : error C2440: '=' : 'const char [6]' から 'LPCWSTR' に変換できません。 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 1>.\C800.cpp(43) : error C2664: 'CreateWindowExW' : 2 番目の引数を 'const char [6]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 1>コードを生成中... 1>ビルドログは "file://d:\My Documents\Visual Studio 2008\Projects\C800\C800\Debug\BuildLog.htm" に保存されました。 1>C800 - エラー 4、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== です。
568 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 02:02:15 ] >>567 なぜコンパイルエラーの部分を省略する。 ググればいろいろ見つかる。 www.google.co.jp/hws/search?hl=ja&q=LPCWSTR+char+c2440&client=fenrir&adsafe=off&safe=off&lr=lang_ja
569 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 02:21:14 ] >>568 ありがとうございます。 文字変換だったのですね。 しかしググっても出てこないので最後に嘆きます。 1>------ ビルド開始: プロジェクト: GAME, 構成: Debug Win32 ------ 1>マニフェストを埋め込んでいます... 1>.\Debug\GAME.exe.intermediate.manifest : general error c1010070: Failed to load and parse the manifest. U_U!$kLdK 1>~[ 1>ビルドログは "file://d:\My Documents\Visual Studio 2008\Projects\C800\GAME\Debug\BuildLog.htm" に保存されました。 1>GAME - エラー 1、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== なるエラーが出るのですが、まったく意味不明です。
570 名前:569 mailto:sage [2008/04/10(木) 18:46:06 ] 申し訳ないです。 自己解決しました。 ありがとうございます。
571 名前:デフォルトの名無しさん [2008/04/10(木) 21:45:49 ] VC++2005で、ADOでSQLSERVER2005に接続して、binary型のフィールドに 1000byte程のバイナリデータを保存したいのですが、 long型の配列にデータをmemcpyし、それをrs->Updateしようとすると、 コンパイルで「bool値に変換します」というような警告がでて、データを転送できません。 バイナリデータを転送するにはどのようにすればいいのでしょうか? (配列には正常にデータがコピーされていることはファイル出力で確認できております)
572 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 00:26:01 ] >>571 support.microsoft.com/kb/258038/ja
573 名前:デフォルトの名無しさん [2008/04/11(金) 06:15:26 ] vector〈基底クラス*〉に数種類の派生クラスをプッシュバックしてオーバーライドした関数を実行するようなことはできますか?
574 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 06:18:09 ] >>573 virtualなメンバ関数を実行ということなら、可能です。
575 名前:デフォルトの名無しさん [2008/04/11(金) 06:33:22 ] もちろん仮想関数にしてあります &の付け忘れでした 解決できましたありがとうございます
576 名前:デフォルトの名無しさん [2008/04/11(金) 06:38:48 ] >>573 =>>574 =>>575
577 名前:デフォルトの名無しさん [2008/04/11(金) 06:50:20 ] 573=574=575=576
578 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 07:17:15 ] >>575 メモリリークに気をつけような。 boost::ptr_vector の使用も検討してみるといい。
579 名前:デフォルトの名無しさん [2008/04/11(金) 12:34:50 ] 動的に二次元配列を確保するにはどうすればよいですか? int x=10; int y=10; double a[x][y]; という風に書くのは、xyが小さい間は出来たのですが、newで確保しようとすると yを変数にできません。vectorを使わずに上記のようなことができるでしょうか? よろしくお願いします。
580 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 12:37:06 ] double **a; *a = new double[x] for( int i = 0; i < x; ++i ) a[x] = new double[y] こんなん
581 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 12:47:33 ] boost::multi_arrayオススメ。
582 名前:デフォルトの名無しさん [2008/04/11(金) 12:52:43 ] >>580 ありがとうございます。 確保した二次元配列をほかの関数に渡すにはどうすればよいですか? あと、boost::multi_arrayは速いですか? 今書いているのは、std::vectorもあまり知らない人に見せるためなので、 boostなんてとてもだめです。
583 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 12:57:05 ] アセンブリ言語のコンパイラのCソースプログラムを持っているのですが、 アセンブリ言語をコンパイルするには、このソースをコンパイルしてから どうすればいいのでしょうか?
584 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 12:58:11 ] void func( int **a ); これでわたせるんじゃね、多分
585 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 13:06:03 ] >>582 そういう初心者には、素直に一次元配列を仮想化して使う方がいい。 こんな関数でも用意すればアクセスするのも割と簡単だ。 static unsigned offset(unsigned x, unsigned y, unsigned w) { return x + y * w; } 勿論、メモリ確保はこうなる。 double * a = new double[w * h]; あー、ついでに言えば>580はバグだらけだから要注意で。 つーか、>584もかすだわ。
586 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 13:06:38 ] >>583 Cソースをコンパイルしてできた実行ファイルを実行してアセンブルすれ ばいいのでは。
587 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 13:19:33 ] >アセンブリ言語のコンパイラ 有り得ない間違いだな。
588 名前:デフォルトの名無しさん [2008/04/11(金) 13:29:33 ] >>580 これは酷い。
589 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 13:34:19 ] mbscmp wcscmp などの違いがわからない・・・・ あと、lstrcmp とか strcmp みたいなのもあったような気がするけど気のせい? 誰か、これらの関数の違いについて分かり易く教えてください。
590 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 13:40:56 ] 文字として wchar_t を使うとき -> wcscmp 文字として char で mbcs を使うとき mbscmp 文字として char で sbcs を使うとき strcmp 文字として TCHAR を使うとき lstrcmp ドキュメント読まずにまず2chで聞くという態度では、わからなくて当たり前。
591 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 13:49:11 ] >>590 すみません。それがいまいちよくわからないんです。 charを使うときとか、tcharを使うときと言われても抽象的すぎて??? 具体的に、どういう処理をするときにmbscmp や strcmp などを使い分けるのでしょうか? 同じ文字列比較でも、mbscmp を使っていたり、 strcmp を使っていたりと、訳が分りません。
592 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 13:52:17 ] >>587 確かに…ご指摘ありがとうございます アセンブリ言語を実行するものの意味で使いました
593 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 13:52:50 ] >>591 それは抽象的だからわからないんじゃなくて、勉強しないからわからないのです。 mbcs と sbcs の違いなんか、Google で 「mbcs と sbcs の違い」を(カッコははずして) 検索すればいくつもそれらしい説明のページが出てくるのです。 もし手抜きじゃなくてホントのホントに何もしないで知識が身に付くと思ってるのなら、 そもそもバカなので勉強しても無駄なので止めるべきです。
594 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 14:04:17 ] >>592 それは普通、アセンブラと呼ばれる。 いや、厳密に言えば「アセンブリ言語を翻訳するもの」だが。
595 名前:デフォルトの名無しさん [2008/04/11(金) 14:05:02 ] >>593 なんか嫌なことでもあったのか?
596 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 14:05:03 ] なんとなく分ったような分らないような・・・・ 同じ英数字からなる文字列比較でもプログラムによって使っている関数が違うのは 書き手(プログラマー)の意識の違いによる? さらにワイド文字とマルチバイト文字の違いがよく分らん。。。。 出直してきます。スレ汚してすみません。