将字符串转换为无符号 __int64 值,通过_strtoui64函数或者stringstream流
_strtoui64的头文件是<stdlib.h>或者<cstdlib>
unsigned __int64 _strtoui64(
const char *nptr,
char **endptr,
int base
);
nptr
要转换的 null 终止的字符串。
endptr
指向停止扫描字符的指针。
base
待使用的数基。
endptr是out类型的参数,就是说他不需要有初始化的值(个人理解)
例子:
char data[30]="1234d232";
char* chEnd=NULL;
unsigned __int64 i64 = _strtoui64(data,&chEnd,10);
结果就是:
i64=1234
chEnd='d'
参考网址:http://msdn.microsoft.com/zh-cn/beginner/85zk715d.aspx
stringstream的头文件是<sstream>
stringstream ssValue;
char dataOne[10]="12345234";
unsigned__int64 i64;
ssValue << dataOne;
ssValue >> i64;
ssValue.clear(); // 注意,如果循环使用,需要清空之前旧的数据,不然数据会异常
这个转换操作的执行效率很低,比_strtoui64这个函数慢很多,当时写的操作,是转换4300万个数据,stringstream用了180s多,_strtoui64只用了16s左右