3

プロセスの作成中にいくつかの数値引数を渡しています (VC++ で)

LPTSTR を int に変換するのに行き詰まっています。

前もって感謝します。

4

5 に答える 5

12

LPTSTR は、char または wide-char 文字列へのロング ポインタです。

_ttoiまたはを使用_tstoiして、文字幅に依存しない変換を行います。

こちらもご覧ください

于 2009-02-02T19:59:19.940 に答える
2

ガック!正確に何をしようとしていますか?問題は親プロセス側(を呼び出すCreateProcess())ですか、それとも子プロセス側ですか?

関数によって作成された親プロセスから子プロセスにパラメーターを伝達する方法はいくつかありますCreateProcess()。これらのパラメーターを適度なサイズの文字列としてエンコードできる場合は、コマンドラインパラメーター(lpCommandLineCreateProcessのパラメーター)を介してパラメーターを渡すのがおそらく最も簡単で移植性が高く、環境変数が2番目です。

適度なサイズの文字列にエンコードできないデータ構造がある場合(大量のメモリであるか、簡単にシリアル化できないため)、プロセス間通信の何らかの方法に頼る必要があります。ファイルまたは共有メモリのブロックは、これを行う2つの方法です。いずれの場合も、子供がこれを見つけるための合意された場所(ファイルの場合はファイルパス、または共有メモリブロックの名前)を考え出し、この文字列をコマンドラインとして渡す必要がありますパラメータまたは環境変数。

lpCommandLine子プロセス内でパラメーターを解析しようとしている場合、それは他の人が提案していることです。

于 2009-02-03T01:29:02.943 に答える
1

atoi()関数 (または、ワイド文字を使用している場合は適切なバージョン) を試して、文字列を整数に変換してください。

于 2009-02-02T19:59:13.093 に答える
1

私のアドバイスは、_ttoi ではなく _tcstol のようなものを使用することです。これにより、文字列内の非数字などのエラー条件を処理できます。例えば:

int result = atoi("0");
result = atoi("foo");

どちらの場合も結果は 0 になりますが、2 番目の場合のみ変換でエラーが発生します。

于 2009-02-02T21:13:46.297 に答える
-1

LPTSTRは文字列へのポインタであるため、文字列の値を表すintが必要な場合は、それをintにキャストしないでください。

文字列に数字が含まれていることがわかっている場合(「1234」など)、_wtoi関数を使用して文字列をintに変換できるはずです。

例えば

int num = _wtoi(foo);

ここで、fooはLPTSTRです。

編集:上記は、LPTSTRがUNICODE文字列である場合にのみ正しく機能します。つまり、_UNICODEが定義されています。そうでない場合は、atoiを使用する必要があります。

http://msdn.microsoft.com/en-us/library/yd5xkb5c(VS.80).aspxを参照してください

于 2009-02-02T20:02:54.707 に答える