2012-02-14 3 views
1

Я пытаюсь что-то вроде этого,Как преобразовать DWORD в char *?

PROCESS_INFORMATION processInfo = ..... 
strcat(args, processInfo.dwProcessId); 

где args является char *, который мне нужно передать в качестве аргумента другой исполняемый файл.

+2

«DWORD» - целочисленный тип. Не имеет смысла преобразовывать его в 'char *'. –

+0

Но мне нужно, чтобы этот 'DWORD' передавался как аргумент другому exe, вызванному с помощью CreateProcess(). Какие-либо предложения? – psp

+0

Возможный дубликат [C++ long to string] (http://stackoverflow.com/questions/947621/c-long-to-string) или [Как преобразовать int в строку в C] (http: // stackoverflow. ком/вопросы/8257714/как к обращенным-ан-ИНТ-строка-в-с). – user7116

ответ

7

Вы можете использовать Sprintf

char procID[10]; 
sprintf(procID, "%d", processInfo.dwProcessId); 

Это будет конвертировать processInfo.dwProcessId в символ, который затем может быть использован вами.

+0

Среди всех возможных вариантов я думаю, что это оптимизированный. – psp

+0

Возможно, следует использовать '% u', поскольку' DWORD' является целым числом без знака. – user7116

+8

На самом деле 'DWORD' является' unsigned long', и вы должны использовать '% lu' в качестве спецификатора формата. – tomlogic

1

Пока не напрямую «преобразования в char*», следующий должен сделать трюк:

std::ostringstream stream; 
stream << processInfo.dwProcessId; 
std::string args = stream.str(); 

// Then, if you need a 'const char*' to pass to another Win32 
// API call, you can access the data using: 
const char * foo = args.c_str(); 
1

Для преобразования типа DWORD в обугливается * Вы можете использовать _ultoa/_ultoa_s

посмотреть здесь может помочь вам. link1

Смежные вопросы