我有一个地址示例:0x003533,它是一个字符串,但要使用它,我需要它是一个 LONG 但我不知道该怎么做:S 有人有解决方案吗?
所以字符串:“0x003533”到长0x003533 ??
我有一个地址示例:0x003533,它是一个字符串,但要使用它,我需要它是一个 LONG 但我不知道该怎么做:S 有人有解决方案吗?
所以字符串:“0x003533”到长0x003533 ??
使用strtol()如下:
#include <cstdlib> #include <字符串> // ... { // ... // 假设 str 是一个包含值的 std::string 长值 = strtol(str.c_str(),0,0); // ... } // ...
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main() {
string s("0x003533");
long x;
istringstream(s) >> hex >> x;
cout << hex << x << endl; // prints 3533
cout << dec << x << endl; // prints 13619
}
编辑:
正如Potatocorn在评论中所说,也可以boost::lexical_cast
如下图使用:
long x = 0L;
try {
x = lexical_cast<long>("0x003533");
}
catch(bad_lexical_cast const & blc) {
// handle the exception
}