Ich übergebe einige numerische Argumente beim Erstellen eines Prozesses (in VC++)
Ich komme bei der Umwandlung von LPTSTR in int nicht weiter.
Vielen Dank im Voraus.
Ich übergebe einige numerische Argumente beim Erstellen eines Prozesses (in VC++)
Ich komme bei der Umwandlung von LPTSTR in int nicht weiter.
Vielen Dank im Voraus.
Wahnsinn! Was genau haben Sie vor? Liegt Ihr Problem auf der Seite des übergeordneten Prozesses (der die CreateProcess()
) oder auf der Seite des untergeordneten Prozesses?
Es gibt mehrere Möglichkeiten, Parameter von einem Elternprozess an einen Kindprozess zu übermitteln, der von der CreateProcess()
Funktion. Wenn Sie diese Parameter als Zeichenkette vernünftiger Größe kodieren können, dann können Sie sie als Befehlszeilenparameter (die lpCommandLine
Parameter von CreateProcess) ist wahrscheinlich die einfachste und portabelste, mit Umgebungsvariablen an zweiter Stelle.
Wenn Sie eine Datenstruktur haben, die Sie nicht in einer Zeichenkette vernünftiger Größe kodieren können (entweder weil sie eine große Menge an Speicher benötigt oder nicht einfach serialisiert werden kann), dann müssen Sie auf eine Methode der Interprozesskommunikation zurückgreifen. Eine Datei oder ein Block gemeinsamen Speichers sind zwei Möglichkeiten, dies zu tun. In beiden Fällen müssen Sie sich auf einen Ort einigen, an dem der Kindprozess diesen finden kann (einen Dateipfad im Falle einer Datei oder den Namen des gemeinsam genutzten Speicherblocks), und diesen String dann als Befehlszeilenparameter oder Umgebungsvariable übergeben.
Wenn Sie versuchen, die lpCommandLine
Parameter innerhalb des untergeordneten Prozesses, dann ist es das, was andere Leute vorgeschlagen haben.
Versuchen Sie die atoi()
Funktion (oder die entsprechende Version, wenn Sie breite Zeichen verwenden), um Zeichenketten in ganze Zahlen zu konvertieren.
Mein Rat wäre, etwas wie _tcstol anstelle von _ttoi zu verwenden, damit Sie Fehlerbedingungen wie Nicht-Ziffern in der Zeichenkette behandeln können. Zum Beispiel:
int result = atoi("0");
result = atoi("foo");
In beiden Fällen ist das Ergebnis 0, aber nur im zweiten Fall gibt es einen Fehler bei der Umrechnung.
LPTSTR ist ein Zeiger auf eine Zeichenkette, daher sollten Sie ihn nicht in einen int umwandeln, wenn Sie einen int benötigen, der den Wert von string darstellt.
Wenn Sie wissen, dass die Zeichenkette Ziffern enthält, z.B. "1234", können Sie die Funktion _wtoi verwenden, um sie in einen int zu konvertieren
z.B..
int num = _wtoi(foo);
wobei foo eine LPTSTR ist.
edit: Das obige funktioniert nur, wenn die LPTSTR ein UNICODE-String ist, d.h. _UNICODE definiert ist. Wenn das nicht der Fall ist, sollten Sie atoi verwenden.
Voir http://msdn.microsoft.com/en-us/library/yd5xkb5c(VS.80).aspx
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.