Gab*_*iel 2 c++ string winapi dword type-conversion
我有一个简单的转换问题:
std::string str = "0xC0A80A02"
Run Code Online (Sandbox Code Playgroud)
我需要将其转换为DWORD.
我在网上搜索并找到了一些解决方案,但似乎都没有.
try1:
DWORD m_dwIP = atol(str.c_str());
Run Code Online (Sandbox Code Playgroud)
try2:
std::istringstream ss(str.c_str());
ss >> m_dwIP;
Run Code Online (Sandbox Code Playgroud)
try3:
sscanf (str.c_str(),"%u",str,&m_dwIP);
Run Code Online (Sandbox Code Playgroud)
请注意,字符串将值存储为hexa.
谢谢,
加布里埃尔
假设sizeof(DWORD) == sizeof(unsigned long),这应该做:
#include <cstdlib>
DWORD m_dwIP = std::strtoul(str.c_str(), NULL, 16);
Run Code Online (Sandbox Code Playgroud)
请参阅http://www.cplusplus.com/reference/clibrary/cstdlib/strtoul/.
注意,这是为C和C++可用(的带材std::和c_str()并改变<cstdlib>到<stdlib.h>但是这应该是很明显的).
istringstream工作正常,只需删除0x前缀并使用std::hex格式化程序:
std::string str = "0xC0A80A02";
unsigned int m_dwIP;
std::istringstream ss(&str[2]);
ss >> std::hex >> m_dwIP;
std::cout << std::hex << m_dwIP << "\n";
Run Code Online (Sandbox Code Playgroud)
输出c0a80a02.
| 归档时间: |
|
| 查看次数: |
15113 次 |
| 最近记录: |