Как я могу изменить этот LPSTR? - PullRequest
0 голосов
/ 15 ноября 2011

Предположим, у меня есть эта переменная

LPTSTR cmdArgs = "D:\\path\my.exe -user blah PLATFORM=0 DEVICE=0 -k poclbm VECTORS BFI_INT WORKSIZE=128 AGGRESSION=7";

Обратите внимание, где написано DEVICE = 0 ну, в моем случае это может быть DEVICE = 1 или DEVICE = 2 и т. Д.

Это будет означать, что эта строка должна быть динамической. Я собираюсь передать в функцию число, которое должно появиться после DEVICE =, однако я понятия не имею, как добавить его в переменную cmdArgs.

Я думал об использовании sprintf и выполнить DEVICE =% d, но я понятия не имею, могу ли я привести переменную char (которая будет содержать отформатированную строку) к LPSTR

Ответы [ 3 ]

2 голосов
/ 15 ноября 2011

LPSTR - это typedef для char *. Вы можете использовать sprintf для вставки номера устройства в строку.

char cmdArgs[1000];
int deviceNum = 1;
sprintf( cmdArgs, "D:\\path\\my.exe -user blah PLATFORM=0 DEVICE=%d -k poclbm VECTORS BFI_INT WORKSIZE=128 AGGRESSION=7", deviceNum );

EDIT:
Поскольку фрагмент кода показывает LPTSTR, вы можете использовать процедуры TCHAR вместо sprintf. LPTSTR является typedef'd как whcar_t *, когда _UNICODE символ препроцессора определен, и char *, если этот символ не определен или _MBCS определен.

TCHAR cmdArgs[1000];
int deviceNum = 1;
_stprintf( cmdArgs, _T(""D:\\path\\my.exe -user blah PLATFORM=0 DEVICE=%d -k poclbm VECTORS BFI_INT WORKSIZE=128 AGGRESSION=7"), deviceNum );
1 голос
/ 15 ноября 2011

В вашем резюме указано LPSTR, а в вашем блоке кода - LPTSTR.Это (может быть) разные вещи, в зависимости от того, собираете ли вы Unicode или нет.

В сборках Unicode LPTSTR - это wchar_t *.В не-Юникоде LPTSTR - это char *.LPSTR - это char * в обоих случаях.

winnt.h содержит эти typedef (это не буквальные typedef, я их здесь как-то перефразировал):При сборке не-Unicode sprintf с% d будет делать то, что вы хотите, как указано здесь другими.

0 голосов
/ 15 ноября 2011

Почему бы не использовать% s, так как у вас есть char *.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...