3 Stimmen

LPTSTR nach int (c++)

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.

12voto

Ates Goral Punkte 132294

Ein LPTSTR ist einfach ein Long Pointer auf einen char oder wide-char String.

Verwenden Sie _ttoi o _tstoi für eine zeichenbreitenunabhängige Konvertierung.

Siehe auch

2voto

Jason S Punkte 178087

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.

1voto

Greg Hewgill Punkte 882617

Versuchen Sie die atoi() Funktion (oder die entsprechende Version, wenn Sie breite Zeichen verwenden), um Zeichenketten in ganze Zahlen zu konvertieren.

1voto

Nemanja Trifunovic Punkte 23869

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.

-1voto

Glen Punkte 20940

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.com

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.

Powered by:

X