トップページ⇒tech
1001コメント330KB

【初心者歓迎】C/C++室 Ver.54【環境依存OK】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/05/14(水) 01:00:02
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.53【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1208989385/l50
【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0313デフォルトの名無しさん2008/05/27(火) 10:18:46
いや俺は手伝わんぞ
0314デフォルトの名無しさん2008/05/27(火) 12:33:06
>>311と>>312はただのコピペ
0315デフォルトの名無しさん2008/05/27(火) 12:34:20
char Description[64];
を
m_combbox.AddString(Description[64]);
で使えるように
LPCTSTR型に変更するにはどうすればいいですか?
0316デフォルトの名無しさん2008/05/27(火) 12:47:38
>>312見たいな事言われたらどう返したらいいんだろう
返事しないとしないで怒られるし・・・
もう怒られるのがデフォってぐらいに思ってればいいのかな
0317デフォルトの名無しさん2008/05/27(火) 12:52:06
>>315
ふつーに
m_combbox.AddString(Description);
でいいんじゃないかい。Unicodeビルドだと一手間必要になるが。
0318デフォルトの名無しさん2008/05/27(火) 12:53:02
>>316
上司が基地外の場合、上司の上司と手をつなぐしかないだろう。
これはたいていうまくいく。
うまくいかない場合、自分が基地外の可能性を疑え。
0319デフォルトの名無しさん2008/05/27(火) 13:01:36
>>314 は野暮
0320デフォルトの名無しさん2008/05/27(火) 13:01:49
>>315
なんだそれ、MFCか?
最近のVC++ならatlconv.hあたりをインクルードしてCA2T
昔のならUSES_CONVERSIONとかいう呪文を唱えてマクロかな
0321デフォルトの名無しさん2008/05/27(火) 13:03:30
>>316
ただのコピペだから、「それ懐かしいな」とか「ひさびさに見た」
とか「総力www」とかそんなレスしとけばいいよ
0322デフォルトの名無しさん2008/05/27(火) 16:34:32
>>319
面白くないネタは潰すに限る
0323デフォルトの名無しさん2008/05/27(火) 17:08:31
DLLとそのヘッダーファイルがあるんですが、ヘッダーファイルをプロジェクトに追加してDLLはどこに配置すればいいんですか?
***.DLLの記述がヘッダーファイルにもないしどのDLLを使うかはどこで指定してるんですか?
それらしき文は

#ifndef XXX_H
#define XXX_H

・
・
・

#ifdef XXX_EXPORTS
#define XXX_API __declspec(dllexport)
#else
#define XXX_API __declspec(dllimport)
#endif

ぐらいです
0324デフォルトの名無しさん2008/05/27(火) 17:15:14
DLLは実行時に必要で、ビルド時にはいらん。
インポートライブラリ(.lib)は無いのか?
0325デフォルトの名無しさん2008/05/27(火) 17:16:26
エラーメッセージの書き方に悩んでいます。

よくある小さなサンプルプログラムでは、エラー処理の箇所に直接文字列リテラルを書きこんでありますが、
大きなプログラムになると、リテラルの保守性の悪さが出てきそうな気がします。
かといって、変数にするとなるとエラーメッセージ1つ1つに変数名をつけるのが大変だし、
"○○がありません。"のように、エラーメッセージに変数を含む場合も困る気がします。

一般的にはどのように実装しているのですか?
0326デフォルトの名無しさん2008/05/27(火) 17:47:01
先ずこんな感じにエラー番号を決めておく。
enum ErrorNos {ErrorMisc, ErrorFileOpenError, ...};

例えばこんな処理があったとして。
FILE * fp = fopen(fileName, "r");

エラー処理関数をそのエラー番号でこんな感じに呼ぶ。
if (fp == NULL) errorProc(ErrorFileOpenError, fileName);
変数がある場合に備えて、幾つかオプション引数を取れるようにしておくこともよくある。

或いは、エラー文字列配列をこんな形で作ってもいい。
const char * const errorStrings[] = {"Undocumented error.", "File(%s) is not found.", ...};

この場合はこんな感じにそれぞれで出力ロジックを用意しなければならないのでお勧めはしない。
if (fp == NULL) fprintf(stderr, errorStrings[ErrorFileOpenError], fileName);
0327デフォルトの名無しさん2008/05/27(火) 17:49:47
>>325
UNIX方面ではgettextというライブラリが一般的。
「メッセージカタログ」という用語でいろいろ調べてみるといいかと思う。
0328デフォルトの名無しさん2008/05/27(火) 18:59:39
http://wisdom.sakura.ne.jp/system/winapi/index.html
Win32 API入門のサンプルはどうしてVC++だとエラーになるんだろうか?Cだとコンパイルできる
CとC++は互換性があるはずなのに

#include<windows.h>

int WINAPI WinMain(
HINSTANCE hInstance ,
HINSTANCE hPrevInstance ,
PSTR lpCmdLine ,
int nCmdShow ) {
HWND hwnd = CreateWindow(
TEXT("STATIC") , TEXT("Kitty on your lap") ,
WS_CAPTION ,
100 , 100 , 200 , 200 , NULL , NULL ,
hInstance , NULL
);

if (hwnd == NULL) return 0;

ShowWindow(hwnd , SW_SHOW);
MessageBox(NULL , TEXT("Kitty on your lap") ,
TEXT("Kitty") , MB_ICONINFORMATION);

return 0;
}
0329デフォルトの名無しさん2008/05/27(火) 19:06:03
>>328
>CとC++は互換性があるはずなのに
いいえ。

>どうしてVC++だとエラーになるんだろうか?
エラーメッセージくらい転記しましょう。

>http://wisdom.sakura.ne.jp/system/winapi/index.html
そういう間違いのあるサイトを参考にするのは如何なものかと。
0330デフォルトの名無しさん2008/05/27(火) 19:08:19
どういうエラーだよ
0331デフォルトの名無しさん2008/05/27(火) 20:57:41
std::wcout.imbue(std::locale("japanese"));
std::wcout << L"森鷗外" << std::endl;

wchar_t 文字列1[] = L"森鷗外";
std::wcout << 文字列1 << std::endl;

LPWSTR 文字列2 = L"森鷗外";
std::wcout << 文字列2 << std::endl;

何れのwcoutも正常に表示されません。
MessageBoxなら

MessageBoxW(0, 文字列1, L"", MB_OK);
MessageBoxW(0, 文字列2, L"", MB_OK);

できちんと表示されますが、何が原因なのでしょうか。
0332デフォルトの名無しさん2008/05/27(火) 21:02:35
>>331
wchar_tのUTF-16って鷗(!= 鴎)もちゃんと表示してくれるの?
0333デフォルトの名無しさん2008/05/27(火) 21:15:35
>>332
wchar_t 文字列1[] = L"森鷗外";
MessageBoxW(0, 文字列1, L"", MB_OK);

でダイアログにきちんと「森鷗外」と表示されます。
0334デフォルトの名無しさん2008/05/27(火) 21:25:21
>>331
それは文字列を表示してるコンソールの問題じゃないのか。
0335デフォルトの名無しさん2008/05/27(火) 21:39:28
>>334
そうなんですか?
コマンドプロンプトの扱いに不慣れで正直良く分りません。

wcoutを使うのは諦めてWin32APIを使う事にしました。
本当にありがとうございました。

wchar_t 文字列1[] = L"森鷗外";
int lpNumberOfCharsWritten = 0;
HANDLE hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
WriteConsoleW(hConsoleOutput, 文字列1, lstrlen(文字列1), (LPDWORD)lpNumberOfCharsWritten, NULL);
0336デフォルトの名無しさん2008/05/27(火) 21:48:56
うちはimbueでもsetlocaleでも表示されたけどな…
0337デフォルトの名無しさん2008/05/27(火) 22:02:08
VC8はlocale::globalを設定するとwcoutのlocaleが効かなくなるバグがあるよ。
0338デフォルトの名無しさん2008/05/27(火) 22:04:34
>>331
正常じゃないってどんな状態?数字が出るとか?
コンパイラは何?
0339デフォルトの名無しさん2008/05/27(火) 22:33:16
>>331
CとC++のワイド入出力は、
外ではマルチバイト文字を使い、入出力時に変換するというモデルになっている。

Windowsで日本語なら外部の文字コードとはCP932 (Shift_JIS)になる。
当然、そこに含まれない文字の表示・入力はできないというわけ。
03403252008/05/27(火) 23:01:21
レスthx

>>326
なるほど。
しかし、引数を取る時はやはりめんどくさいそうですね。

>>327
初めて知りました。
googleで検索したところ、まとまった解説サイトみたいなのがあまり充実してないのがつらいところです。
0341デフォルトの名無しさん2008/05/27(火) 23:14:50
誰か↓「C++相談室 part61」の次スレ立ててくれない?
http://pc11.2ch.net/test/read.cgi/tech/1205059063/l20

立てようと思ったらIPグループスレ立て規制(新このホスト〜)に
引っ掛かってるので。
0342デフォルトの名無しさん2008/05/27(火) 23:48:47
試してみる。 俺がmutex取ったからな!
0343デフォルトの名無しさん2008/05/27(火) 23:51:34
>>342
WaitForSingleObject( >>342 , 3600000 );
0344デフォルトの名無しさん2008/05/27(火) 23:58:36
ReleaseMutex(>>342);

C++相談室 part62
http://pc11.2ch.net/test/read.cgi/tech/1211900039/l50
0345デフォルトの名無しさん2008/05/28(水) 00:00:29
スレ立てサンクス
0346デフォルトの名無しさん2008/05/28(水) 10:31:06
クラスの静的メンバ変数は、外部で実体を定義しないと使えませんか
0347デフォルトの名無しさん2008/05/28(水) 10:34:59
メンバ変数で、static const int x=10;
とすると実体なしで。コンパイルが通ります。間違えですか?
0348デフォルトの名無しさん2008/05/28(水) 10:38:03
間違えではありません。
0349デフォルトの名無しさん2008/05/28(水) 10:39:02
>>346
基本的にはそう。

>>347
それだけで定数式としては使える。
でも const int& r = C::x とかするとリンクエラーになるから、
広く使うクラスなら定義も作っといたほうがいい。(その場合は初期化部分は無し)
0350デフォルトの名無しさん2008/05/28(水) 10:41:16
サンクス
0351デフォルトの名無しさん2008/05/28(水) 11:54:06
環境はvc2005です。

こんなエラーが出ます。
1>main.obj : error LNK2019: 未解決の外部シンボル "__declspec(dllimport) public: void __thiscall ANNkd_tree::annkPriSearch(double *,int,int *,double *,double)"
(__imp_?annkPriSearch@ANNkd_tree@@QAEXPANHPAH0N@Z) が関数 "int __cdecl findmatch(int)" (?findmatch@@YAHH@Z) で参照されました。
1>main.obj : error LNK2019: 未解決の外部シンボル "__declspec(dllimport) public: __thiscall ANNkd_tree::ANNkd_tree(double * *,int,int,int,enum ANNsplitRule)"
(__imp_??0ANNkd_tree@@QAE@PAPANHHHW4ANNsplitRule@@@Z) が関数 "int __cdecl findmatch(int)" (?findmatch@@YAHH@Z) で参照されました。
1>main.obj : error LNK2001: 外部シンボル ""public: virtual void __thiscall ANNkd_tree::annkSearch(double *,int,int *,double *,double)"
(?annkSearch@ANNkd_tree@@UAEXPANHPAH0N@Z)" は未解決です。
1>main.obj : error LNK2001: 外部シンボル ""public: virtual int __thiscall ANNkd_tree::annkFRSearch(double *,double,int,int *,double *,double)"
(?annkFRSearch@ANNkd_tree@@UAEHPANNHPAH0N@Z)" は未解決です。
1>main.obj : error LNK2001: 外部シンボル ""public: virtual int __thiscall ANNkd_tree::theDim(void)" (?theDim@ANNkd_tree@@UAEHXZ)" は未解決です。
1>main.obj : error LNK2001: 外部シンボル ""public: virtual double * * __thiscall ANNkd_tree::thePoints(void)" (?thePoints@ANNkd_tree@@UAEPAPANXZ)"
は未解決です。
1>main.obj : error LNK2019: 未解決の外部シンボル "__declspec(dllimport) public: virtual __thiscall ANNkd_tree::~ANNkd_tree(void)"
(__imp_??1ANNkd_tree@@UAE@XZ) が関数 "public: virtual void * __thiscall ANNkd_tree::`scalar deleting destructor'(unsigned int)"
(??_GANNkd_tree@@UAEPAXI@Z) で参照されました。
c++ と c を合わせて使おうとしているのですが、いたるところでエラーがでています。
このエラーはなぜ起こるのでしょうか
0352デフォルトの名無しさん2008/05/28(水) 11:55:14
>>351
必要なライブラリをリンクしていないからだと思うよ
0353デフォルトの名無しさん2008/05/28(水) 11:56:22
extern "C" が抜けてるとか
名前マングリング でぐぐってみるとよかれ
0354デフォルトの名無しさん2008/05/28(水) 12:02:32
>>351
http://www.google.co.jp/search?q=LNK2019
http://www.google.co.jp/search?q=LNK2001
0355デフォルトの名無しさん2008/05/28(水) 15:53:12
RemoveDirectoryがディレクトリが失敗します。テンポラリフォルダとファイルを生成して最後に
それらを消したいのですが、ファイルは成功しますが、フォルダが無理です。 
プログラムを終了して次回に消すと平気です。
なぜでしょうか? ファイルにロックがかかっていれば当然無理ですが、ファイルの削除だけは成功してます。
0356デフォルトの名無しさん2008/05/28(水) 15:55:03
エラーコードくらい調べては
0357デフォルトの名無しさん2008/05/28(水) 16:01:11
調べました。 
32: ファイルが別の処理で使われているため、アクセスできません。
でした。 ソース見直してみます。サンクス
0358デフォルトの名無しさん2008/05/28(水) 16:05:51
カレントディレクトリでもないし、空フォルダだし、中のファイルはちゃんとCloseHandleしてるのに原因わかりません。
0359デフォルトの名無しさん2008/05/28(水) 16:13:26
ファイルを作らずフォルダだけ作って消そうとしたらどうなるか?
0360デフォルトの名無しさん2008/05/28(水) 16:21:24
つかんでるのは自分自身だろうしなあ
カレントディレクトリはどうなってる?
0361デフォルトの名無しさん2008/05/28(水) 19:20:22
VC++6で、メンバ関数でテンプレート使うとエラーになります。
どうすれば良くなりますでしょうか?
template < class C > int write(string x, C y) {省略}

: error C2059: 構文エラー : '<'
: error C2334: '{' の前に予期しないトークンがありました。関数の本体は無視されます。
0362デフォルトの名無しさん2008/05/28(水) 19:27:18
自己解決しました。
0363デフォルトの名無しさん2008/05/28(水) 20:53:00
以下をコンパイルしようとするとエラーになります。どうしてでしょうか?
#include <iostream>
class test {};
int main() {
const test aa;
return 0;
}
エラー
$ g++ -Wall samp80.cpp
test.cpp: In function 'int main()':
test.cpp:4: error: uninitialized const 'aa'
test.cpp:4: warning: unused variable 'aa'

0364デフォルトの名無しさん2008/05/28(水) 20:56:43
constしてるのに初期化してないからじゃない
0365デフォルトの名無しさん2008/05/28(水) 20:58:19
>>363
英語を勉強しようぜ
0366デフォルトの名無しさん2008/05/28(水) 21:02:51
>>364-365
ありがとうです。でも初期化のやりようがないと思うんですが、、、
class test {}; ってconstタイプのオブジェクトは作成できないんですか?
0367デフォルトの名無しさん2008/05/28(水) 21:03:59
じゃあconstにするなよ
0368デフォルトの名無しさん2008/05/28(水) 21:07:39
const test aa = {};
0369デフォルトの名無しさん2008/05/28(水) 21:26:59
>>366
constメンバを含んでいてもコンストラクタで初期化は出来る
0370デフォルトの名無しさん2008/05/28(水) 23:31:35
テンプレートってコンパイラが勝手に型解決するのはいいんだけど、
なんかVBっぽくて気持ち悪いんですが。
0371デフォルトの名無しさん2008/05/28(水) 23:33:41
Variantの事言ってるのか?
意味あいが全然違うぞ
0372デフォルトの名無しさん2008/05/28(水) 23:41:18
デフォルトの型を定義していない限りは勝手に型解決したりなんかしません
0373デフォルトの名無しさん2008/05/28(水) 23:44:06
>>370
templateの型解決はきれいな解決。どんな型でも通るわけではない。
0374デフォルトの名無しさん2008/05/29(木) 00:27:14
VB の型解決は動的。
実行時に型が好きに変わる。
高等な union みたいなもん。

テンプレートの型解決は静的。
コンパイル時に型が決まる。
0375デフォルトの名無しさん2008/05/29(木) 02:56:07
テンプレートクラス内にメンバ関数で
const T* const func() const;
というのがあった時、2個目のconstの意味が分かりません。
どういう意味ですか?
0376デフォルトの名無しさん2008/05/29(木) 03:13:10
>>375
戻り値は書き換えできませんよ、って意味。
でも、戻り値は a + b の結果と同じように、元々別のルールで書き換えできないから
あんまり意味は無い。

戻り値の型がクラス型だと、少しは違いが出る。でもやっぱりそんな違いを利用した
コードは書かないほうがいいんで、総じて意味が無い。
0377デフォルトの名無しさん2008/05/29(木) 04:17:35
>>376
それだと、一個目のconstがあるから二個目のconstは必要bネくないですか=H
0378デフォルャgの名無しさん2008/05/29(木) 04:22:59
関数名の後のconstは
メンバ変数を参照することはあっても変更はしない、
という意味
0379デフォルトの名無しさん2008/05/29(木) 04:25:06
>>377
その2つは修飾している先が違うから、片方がもう一方のかわりになったりはしない。
一個目の const はポインタの指す先の値に付く const 。
二個目の const はポインタの値に付く const 。
0380デフォルトの名無しさん2008/05/29(木) 05:29:50
>>375
一番左のconstは構文上の利便性のために特別扱いされてる。
「const T* const」は
「T const * const」と解釈される。

constは左結合。
T ←const(実体がconst) * ←const(ポインタ値がconst)

※別の例
char * * const a = NULL;
a = NULL; //コンパイルエラー

char * const * b = NULL;
*b = NULL; //コンパイルエラー
0381デフォルトの名無しさん2008/05/29(木) 06:19:10
const char * const p って書いたら、((const-->char) *)型の(const-->p)くらいに思ってたんだけど。
0382デフォルトの名無しさん2008/05/29(木) 06:34:49
右結合で考えてるってことかな?
2番目の位置にconstを書いてみると分かるよ。

const char const * p; // (VC++2005) warning C4114: 同じ型の修飾子が 2 度以上使われています。
0383デフォルトの名無しさん2008/05/29(木) 06:50:34
ほんとだ、普通に右側にだけ置いても大丈夫なんだ。
typedef const char cchar ;
const cchar c = 0;
こういうのはアリなんだ。constつけれた方が分かりやすいから?
0384デフォルトの名無しさん2008/05/29(木) 07:07:31
多分そうだと思う。>>382も警告レベルだしね。
0385デフォルトの名無しさん2008/05/29(木) 08:39:54
>>375
参照やポインタ返しの場合は書き換えを禁止できる点で有効。
0386デフォルトの名無しさん2008/05/29(木) 08:51:52
>>380
そうだったのか!いままで法則性をさっぱり見つけられなくって難儀してたとよ。
0387デフォルトの名無しさん2008/05/29(木) 08:53:56
メンバ関数内でクラスの値を変更しない場合に、関数の後にconstが付けられる。
これはインスタンスのメンバをキャッシュ参照で済ませても良いよという事をコンパイラに伝える役割を持っている。
03883872008/05/29(木) 08:54:35
ごめん
0389デフォルトの名無しさん2008/05/29(木) 10:47:38
doubleの計算の過程で
1.00000000002とか出たときに、
この2の部分を消したい(小数点以下11桁以降を0にしたい)
のですが、何か方法ありますでしょうか?
0390デフォルトの名無しさん2008/05/29(木) 11:19:56
>>389
表示の問題?それとも数を変更する問題?後者なら正確には不可能。
double に 10 進法である桁以降完全に 0 にするという概念は無いから。
近似的には 10^10 かけて floor して 10^-10 かけるとかの関数書くとか。
03913892008/05/29(木) 11:29:32
>>390
なるほど!floor関数とか使ったことなかったので勉強になりました。
これから書いてみます、どうもありがとうございました。
0392デフォルトの名無しさん2008/05/29(木) 11:36:11
>>389
こんな方法もあるよ
#include<stdio.h>
#include<math.h>

int main(void){
double x=1.234567890123456789;

printf("%.12f\n", x);
x-=fmod(x, 1e-10);
printf("%.12f\n", x);

return 0;
}
03933892008/05/29(木) 11:50:50
>>392
あぁ〜〜なるほど!
余りを引いても出来るんですね。
ありがとうございました。
0394デフォルトの名無しさん2008/05/29(木) 14:00:26
mapを使うとき<string , int>ならば、未使用のとき0が入っていますが、
<string , クラス>のときは、未使用の判別はどうやれば良いですか?
0395デフォルトの名無しさん2008/05/29(木) 14:03:38
>>394
デフォルトコンストラクタで初期化されてる。判別できるかどうかはクラスによる。
int だって、未使用の場合と 0 を入れた場合は判別できないね。
0396デフォルトの名無しさん2008/05/29(木) 14:05:06
自己解決しました。

> もし存在しないキーを指定してアクセスした場合には、そのキーを自動的に登録します。
> その キーに対応する値は、その値の型のデフォルトコンストラクタによって初期化されます。
0397デフォルトの名無しさん2008/05/29(木) 14:06:19
>>395
トンクス! 自分で作るクラスなので判別できるように設定したいと思います。
0398デフォルトの名無しさん2008/05/29(木) 14:22:28
未使用かどうか調べたいなら find(key) すればいいと思うぞ。
0399デフォルトの名無しさん2008/05/29(木) 14:28:38
あくまで想像だけど、map::find()やmap::lower_bound()を使うべきところを
全部map::operator[]で済まそうとして、本来遭遇しなくていい問題に遭遇している気がする。
「見るだけなのに要素が生成されちゃう。困ったなぁ」みたいな。
0400デフォルトの名無しさん2008/05/29(木) 14:52:49
トンクス! そっちのほうが良いです
0401デフォルトの名無しさん2008/05/29(木) 17:52:27
Visual Basic 6.0 の配列要素、例えばA(5000),B(5000),C(5000)としたときに、
Visual C++ で作成したDLLからその配列要素に書き込んだり、読み込んだりすることは出来るの?
もちろん、Visual Basic 6.0で起動中にそのDLLを使います。

今はVisual Basic 6.0を使っていますが、これからVisual C++を勉強する自分にとってまだDLLがよく分からないので、
よろしくお願いします。
0402デフォルトの名無しさん2008/05/29(木) 18:42:26
>>401
できる。ここに書いてあることはVB6と今のVC全部でも通用する。
http://support.microsoft.com/kb/410837/ja
0403デフォルトの名無しさん2008/05/29(木) 19:28:16
最近独習Cをかって自力でやろうと思っているんですが、環境vistaで最初の1.2で躓いてます。
技術的な問題じゃないんですが、CD付属のものを使わずに、C言語を扱える環境をつくれませんか?
0404デフォルトの名無しさん2008/05/29(木) 19:33:21
>>402
サンクス。

あと、インターネットからのホームページのHTMLデータを収得する方法がわかりましたら、
これもよろしくお願いします。

今はVB6で収得していますがチョット時間がかかるため、C++に移植したいので。
0405デフォルトの名無しさん2008/05/29(木) 19:56:46
>>404
ここをサポートセンターと勘違いしない方がよい。
0406デフォルトの名無しさん2008/05/29(木) 19:58:30
サポートセンターで吹いてしまった
0407デフォルトの名無しさん2008/05/29(木) 20:25:26
>>405
わからないならレスしないで下さい。スレが汚れます。
せっかく他の人はいい人なのに。
0408デフォルトの名無しさん2008/05/29(木) 20:32:46
>>404=>>407ですね、わかります
多分>>405は方法を知っているんだと思うよ

とりあえず、>>404はWinsockとHTTPでググれ・・・っと
0409デフォルトの名無しさん2008/05/29(木) 20:34:02
Cでスクレイピングなんてまた面倒くさい事を
0410デフォルトの名無しさん2008/05/29(木) 21:40:43
>>408
みなさん、ありがとう。
勉強する糸口がみえました。

>>409
他に早く処理できる方法があるんですか?
VB6でやっている自分としては、C++でやった方が早いと思ったので。
0411デフォルトの名無しさん2008/05/29(木) 22:12:45
VC++で、プログラム中に他のexeに引数を渡して実行するという事をしたいんですがどうすれば良いんでしょうか?
0412デフォルトの名無しさん2008/05/29(木) 22:20:20
>>411
system
spawn
exec
CreateProcess
■ このスレッドは過去ログ倉庫に格納されています