Convert String to int / Convert int to String in C++
Programming/C/C++ / 2012. 1. 1. 22:59
This EE article provides examples of conversion techniques for various types of string variables: classic C-style strings, MFC/ATL CStrings, and STL's std::string data type.
Notes:
References:
atoi, _atoi_l, _wtoi, _wtoi_l
http://msdn.microsoft.com/en-us/library/yd5xkb5c.aspx
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
http://msdn.microsoft.com/en-us/library/ybk95axf.aspx
_itoa, _i64toa, _ui64toa, _itow, _i64tow, _ui64tow
http://msdn.microsoft.com/en-us/library/yakksftt(VS.80).aspx
String to Numeric Value Functions (strtoX, et al.)
http://msdn.microsoft.com/en-us/library/53b7b72e(VS.80).aspx
Data Conversion (ultoX, etc.)
http://msdn.microsoft.com/en-us/library/0heszx3w(VS.80).aspx
CStringT::Format
http://msdn.microsoft.com/en-us/library/aa314327(VS.60).aspx
ostringstream
http://msdn.microsoft.com/en-us/library/6kacs5y3.aspx
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
If you liked this article and want to see more from this author, please click the Yes button near the:
Was this article helpful?
label that is just below and to the right of this text. Thanks!
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
출처 : http://blog.naver.com/wassupnari?Redirect=Log&logNo=100107651361
Convert Integer to String
int to C-style (NULL-terminated char[]) string1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
int n=1234567890;
char szResult[12];
#include <stdio.h>
...
sprintf( szResult, "%d", n ); // use "%u" for unsigned int
sprintf_s( szResult, sizeof(szResult), "%d", n ); // "safe" version
//------------------------------------- alternative: itoa
#include <stdlib.h>
...
_itoa( n, szResult, 10 );
_itoa_s( n, szResult, sizeof(szResult), 10); // "safe" version
int to ATL/MFC CString1: 2: 3: 4: 5: 6:
#include <cstringt.h>
...
int n;
CString sResult;
sResult.Format( "%d", n ); // use "%u" for unsigned int
int to STL std::string1: 2: 3: 4: 5: 6: 7: 8: 9:
#include <iostream>
#include <sstream>
...
int n;
std::string sResult;
std::ostringstream ostr;
ostr << n;
sResult= ostr.str();
Convert String to Integer
C-style (NULL-terminated char[]) string to int1: 2: 3: 4: 5: 6:
#include <stdlib.h>
...
char szNumber[12]= "1234567890";
int nResult;
nResult= atoi( szNumber );
ATL/MFC CString to int1: 2: 3: 4: 5: 6:
#include <cstringt.h>
...
CString sNumber= "1234567890";
int nResult;
nResult= atoi( sNumber ); // automatically does LPCSTR(sNumber)
STL std::string to int1: 2: 3: 4: 5: 6: 7:
#include <string>
#include <stdlib.h>
...
std::string sNumber= "1234567890";
int nResult;
nResult= atoi( sNumber.c_str() );
Notes:
- If you are using the UNICODE character set and supplying an output buffer (as with sprintf and itoa) you'll need to keep in mind that characters are two bytes long. The normal procedure is to declare character buffers as the TCHAR data type, which will take into consideration the data element size.
- Output buffer length.
C++ integers are typically 32-bits, with values as high as billions; the range is:1: 2:
0 to 4,294,967,295 (unsigned)
-2,147,483,648 to 2,147,483,647 (signed)
If you are working with 64-bit integers (called __int64 or long long), the values are as high as quintillions; the range is:1: 2:
0 to 18,446,744,073,709,551,615 (unsigned)
-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 (signed)
- Both sprintf and itoa have been termed unsafe (some would say they've been deprecated, others would not use that term) because of the chance that a sloppy programmer might not provide a large enough output buffer.
The examples show how to use the safer xxx_s variations of these functions as an alternative. The older functions might write beyond the end of the buffer and stomp on other variables or blow the stack frame -- and cause endless debugging headaches. Of course, if you are determined to give yourself grief, you can still blow up the "safe" version by passing in the wrong length value...
The CString::Format function allocates the buffer for you and takes care to avoid the buffer overrun problem. The std::ostringstream << (insertion operator) also takes care of the buffer allocation for you.
- The examples above compile and work under Microsoft VS2008. Some Microsoft-specific functionality is implied (refer to the references, below, if you worry about these things). However, there is an excellent chance that at least one of the variations will work for you in your development system, whatever it is.
References:
atoi, _atoi_l, _wtoi, _wtoi_l
http://msdn.microsoft.com/
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
http://msdn.microsoft.com/
_itoa, _i64toa, _ui64toa, _itow, _i64tow, _ui64tow
http://msdn.microsoft.com/
String to Numeric Value Functions (strtoX, et al.)
http://msdn.microsoft.com/
Data Conversion (ultoX, etc.)
http://msdn.microsoft.com/
CStringT::Format
http://msdn.microsoft.com/
ostringstream
http://msdn.microsoft.com/
=-=-=-=-=-=-=-=-=-=-=-=-=-
If you liked this article and want to see more from this author, please click the Yes button near the:
Was this article helpful?
label that is just below and to the right of this text. Thanks!
=-=-=-=-=-=-=-=-=-=-=-=-=-
출처 : http://blog.naver.com/wassupnari?Redirect=Log&logNo=100107651361
반응형
'Programming > C/C++' 카테고리의 다른 글
64비트 정수 __int64 사용법: 변수 선언, printf()로 출력 (0) | 2012.01.12 |
---|---|
int to long long type casting (0) | 2012.01.09 |
정수 실수 종류(자료형;데이터형), 최소값 최대값; char int float, Data Type Ranges (0) | 2011.11.25 |
[Link Error] LIBC.lib 등의 정확한 사용 (0) | 2011.09.17 |
[Link Error] LIBCMT.lib(invarg.obj) (0) | 2011.09.17 |