C++ string to int, int to string 형변환 하기 , string 문자열에서 숫자만 선택해 형변환

 

 

 

int stoi (const string& str [, size_t* idx = 0, int base = 10]) : string to int

 

- string을 int로 바꾸어주기 위해서 stoi() 함수를 사용해 준다.

(stoi -> string to integer를 줄인 것이다. 그래서 이를 응용해 생각해보면, stoll은 string to long long으로 long long 형으로 형변환 할 수 있다.)

 

 

- stoi()을 사용하기 위해서는 #include <string> 을 해주어야 한다.

(※ #include <string.h>가 아닌 <string>을 해주어야 한다. )

 

 

- 3번 째 인수를 보면 디폴트 값으로 10이 주어져 있다. 이를 변경해주면 n진수의 문자열을 10진수의 수로 변경할 수 있다.

 

 

 

 

 

 

 

string to_string(int val) : int to string

 

- 함수명 그대로 string 형으로 바꾸어 줄수 있다.

 

- 인수로는 int 뿐만 아니라 double형 long long형 등등... 을 사용할 수 있다.

 

- to_string()을 사용하기 위해서는 #include <string> 을 해주어야 한다.

 

 

 

 

 

 

 

[ 코 드 ]

#include <iostream>
#include <string>
using namespace std;

int main() {
	string a = "1234", b = "1a2b3c";
	int num = 4321;

	// 1. string -> int
	cout << stoi(a) << "\n";
	// 8진수 1234를 -> 10진수로 변환
	cout << stoi(a,nullptr,8) << "\n";


	// 2. string 문자열에서 숫자만 구분하여 출력
	for (int i = 0; i < b.size(); i++) {
		if (b[i] >= '0' && b[i] <= '9') cout << b[i] - '0';
	}
	cout << "\n";


	// 3. int -> string
	string s = to_string(num);
	string r = "결과 = ";

	r += num;
	cout << r << "\n";

	r = "결과 = ";
	r += s;
	cout << r << "\n";

	return 0;
}

 

 

- 10라인 : 문자열의 숫자만 있을 경우 그냥 stoi를 사용해주면 숫자로 변경 할 수 있다.

 

만약 문자열의 숫자와 문자가 섞여 있다면, 앞에서부터 문자가 나올 때까지의 숫자만을 변환해 준다.

 

 

 

- 12라인 : 진수를 지정해주었다. 8진수인 "1234"를 10진수로 변환해준다. 결과는 668.

 

 

 

- 17라인 : string 문자열을 하나씩 접근할 때는 char형이다. 그래서 숫자일 경우 '0'(=48) 와 '9'(=57) 사이의 값을 가지면 숫자이다.

 

만약 숫자일 경우 '0'(=48)을 빼주면 숫자를 구할 수 있다.

 

ex) 문자가 '2'일 경우 아스키 코드 상 50이므로 여기에 '0'(=48)을 빼주면 숫자 2를 얻을 수 있다.

 

 

 

- 23라인 : to_string() 을 사용하여서 숫자를 문자열로 바꾸었다.

 

 

 

 

[ 결 과 ]

 

 

숫자를 문자열로 변경하지 않은 채 문자열과 더해 주었을 때는 아무것도 출력되지 않았다.

 

하지만 to_string으로 문자열로 변환한 후 더해준 문자열을 출력해주었을 때는 잘 출력되는 것으로 보아 무자열로 잘 변환 되었다는 것을 확인할 수 있다.

 

 

 

 

 

참조

http://www.cplusplus.com/reference/string/stoi/

 

stoi - C++ Reference

function template std::stoi int stoi (const string& str, size_t* idx = 0, int base = 10); int stoi (const wstring& str, size_t* idx = 0, int base = 10); Convert string to integer Parses str interpreting its content as an integral number of the spe

www.cplusplus.com

 

 

+ Recent posts