首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

字符串转数字,该如何解决

2012-02-27 
字符串转数字第一种方法:C/C++ codevoid CStringToChar(CStringm_snd,char*str2){charbuf[129]//发送缓冲

字符串转数字
第一种方法:

C/C++ code
void CStringToChar(CString   m_snd,char   *str2)   {       char   buf[129];   //发送缓冲区       ZeroMemory(buf,sizeof(buf));   //缓冲区清零       CString   tmpstr(m_snd);   //复制要发送的字符串       int   multibytelen=WideCharToMultiByte(   //计算从Unicode转换到Ansi后需要的字节数           CP_ACP,   //根据ANSI   code   page转换           WC_COMPOSITECHECK   |   WC_DEFAULTCHAR,   //转换出错用缺省字符代替           tmpstr.GetBuffer(m_snd.GetLength()),   //要转换的字符串地址           m_snd.GetLength(),   //要转换的个数           0,   //转换后字符串放置的地址           0,   //最多转换字符的个数,为0表示返回转换Unicode后需要多少个字节           0,   //缺省的字符:"\0"           0   //缺省的设置           );       WideCharToMultiByte(   //转换Unicode到Ansi           CP_ACP,           WC_COMPOSITECHECK   |   WC_DEFAULTCHAR,           tmpstr.GetBuffer(m_snd.GetLength()),           m_snd.GetLength(),           buf,   //转换到缓冲区中           128,   //最多128个字节           0,        0        );    strcpy(str2,buf);}


[解决办法]
sscanf, swscanf
Read formatted data from a string.

int sscanf( const char *buffer, const char *format [, argument ] ... );

int swscanf( const wchar_t *buffer, const wchar_t *format [, argument ] ... );


[解决办法]
顶 这个要支持

我也分享个:如有错误请指正。。。。
C/C++ code
//视CString字符串为16进制字符串,将其转换成intint strHexToInt(CString strSource){     int nTemp=0;    for(int i = 0; i<(int)::strlen(strSource); i++)    {        int nDecNum;        switch(strSource[i])        {        case 'a':        case 'A':             nDecNum = 10;             break;        case 'b':        case 'B':             nDecNum = 11;             break;        case 'c':        case 'C':               nDecNum = 12;               break;        case 'd':        case 'D':               nDecNum = 13;              break;        case 'e':        case 'E':               nDecNum = 14;               break;        case 'f':        case 'F':               nDecNum = 15;               break;        case '0':        case '1':        case '2':        case '3':        case '4':        case '5':        case '6':        case '7':        case '8':        case '9':                nDecNum = strSource[i] - '0';                 break;        default:                 return 0;           }        nTemp += nDecNum * (int)::pow(16,::strlen(strSource)-i -1);    }    return nTemp;}
[解决办法]
不用那么麻烦的,用sscanf()觉得可以解决你的问题了,可以参考MSDN关于sscanf的使用方法
[解决办法]
WideCharToMultiByte


记下了,谢谢分享。

热点排行