Convert MFC CString to integer

2019-01-17 19:32发布

How to convert a CString object to integer in MFC.

10条回答
虎瘦雄心在
2楼-- · 2019-01-17 20:02
CString s;
int i;
i = _wtoi(s); // if you use wide charater formats
i = _atoi(s); // otherwise
查看更多
迷人小祖宗
3楼-- · 2019-01-17 20:02
CString s="143";
int x=atoi(s);

or

CString s=_T("143");
int x=_toti(s);

atoi will work, if you want to convert CString to int.

查看更多
ゆ 、 Hurt°
4楼-- · 2019-01-17 20:02

Define in msdn: https://msdn.microsoft.com/en-us/library/yd5xkb5c.aspx

int atoi(
   const char *str 
);
int _wtoi(
   const wchar_t *str 
);
int _atoi_l(
   const char *str,
   _locale_t locale
);
int _wtoi_l(
   const wchar_t *str,
   _locale_t locale
);

CString is wchar_t string. So, if you want convert Cstring to int, you can use:

 CString s;  
int test = _wtoi(s)
查看更多
别忘想泡老子
5楼-- · 2019-01-17 20:02

The canonical solution is to use the C++ Standard Library for the conversion. Depending on the desired return type, the following conversion functions are available: std::stoi, std::stol, or std::stoll (or their unsigned counterparts std::stoul, std::stoull).

The implementation is fairly straight forward:

int ToInt( const CString& str ) {
    return std::stoi( { str.GetString(), static_cast<size_t>( str.GetLength() ) } );
}

long ToLong( const CString& str ) {
    return std::stol( { str.GetString(), static_cast<size_t>( str.GetLength() ) } );
}

long long ToLongLong( const CString& str ) {
    return std::stoll( { str.GetString(), static_cast<size_t>( str.GetLength() ) } );
}

unsigned long ToULong( const CString& str ) {
    return std::stoul( { str.GetString(), static_cast<size_t>( str.GetLength() ) } );
}

unsigned long long ToULongLong( const CString& str ) {
    return std::stoull( { str.GetString(), static_cast<size_t>( str.GetLength() ) } );
}

All of these implementations report errors through exceptions (std::invalid_argument if no conversion could be performed, std::out_of_range if the converted value would fall out of the range of the result type). Constructing the temporary std::[w]string can also throw.

The implementations can be used for both Unicode as well as MBCS projects.

查看更多
登录 后发表回答