【问题标题】:How to convert DWORD to char *?如何将 DWORD 转换为 char *?
【发布时间】:2012-02-14 06:00:06
【问题描述】:

我正在尝试这样的事情,

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

其中argschar *,我需要将其作为参数传递给另一个可执行文件。

【问题讨论】:

  • A DWORD 是一个整数类型。将其转换为char* 没有任何意义。
  • 但我需要将此DWORD 作为参数传递给另一个使用 CreateProcess() 调用的 exe。有什么建议吗?

标签: c++


【解决方案1】:

你可以使用 sprintf

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

这会将 processInfo.dwProcessId 转换为您可以使用的字符。

【讨论】:

  • 在所有可能的选项中,我认为这是优化的选项。
  • 应该使用%u,因为DWORD是一个无符号整数。
  • 其实DWORD是一个unsigned long,你应该使用%lu作为格式说明符。
【解决方案2】:

要将 DWORD 转换为 char *,您可以使用 _ultoa / _ultoa_s

看这里可能对你有帮助。link1

【讨论】:

    【解决方案3】:

    MSDN 有很好的文档,查看Data Conversion page

    还有sprintf()

    【讨论】:

      【解决方案4】:

      虽然不是直接“转换为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();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-21
        相关资源
        最近更新 更多