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>usingnamespace std;intmain(){
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";return0;}
C++
- 10라인 : 문자열의 숫자만 있을 경우 그냥 stoi를 사용해주면 숫자로 변경 할 수 있다.
만약 문자열의 숫자와 문자가 섞여 있다면, 앞에서부터 문자가 나올 때까지의 숫자만을 변환해 준다.
- 사용하기 위해서는 #include <math.h> 혹은 #include <cmath> 를 해주어야 한다.
- 리턴형은 double 형으로 인수로 준 값의 양의 제곱근을 리턴한다.
double pow (double a, double n);
- 사용하기 위해서는 #include <math.h> 혹은 #include <cmath> 를 해주어야 한다.
- 리턴형은 double으로서 a의 n제곱을 한 값을 리턴한다.
[ 코 드 ]
#include<iostream>#include<cmath>usingnamespace std;intmain(){int a =3, n =4, b =144;
cout << a <<"의 "<< n <<"승 = "<<pow(a, n)<<"\n";
cout << b <<"의 "<<"양의 제곱근 = "<<sqrt(b)<<"\n";return0;}
#include<iostream>#include<math.h>#define N 500#define N2 199usingnamespace std;boolsosu(int n){int k =(int)sqrt(n);for(int i =2; i <= k; i++){if(n % i ==0)returnfalse;}returntrue;}intmain(){bool* b =newbool[N +1];// 숫자 A을 배열의 A번에 저장하기 위하여 크기 N+1for(int i =2; i < N+1; i++) b[i]=true;for(int i =2; i * i < N+1; i++){for(int k = i * i; k < N+1; k += i){
b[k]=false;}}// 결과
cout << N <<"까지의 소수들\n";for(int i =2; i < N +1; i++)if(b[i]) cout << i <<", ";
cout <<"\n\n"<< N2 <<"는 ";if(sosu(N2)) cout <<"소수입니다.\n";else cout <<"소수가 아닙니다.\n";return0;}
C++
16~23 라인 : N+1만큼의 크기를 갖는 bool 배열을 선언하고 true로 초기화 해준다. 그리고 N까지 i의 배수들을 false로 바꾸는 과정을 반복한다.
7라인 : sosu함수는 인수로 받은 수가 소수인지 판별하여서 참이면 true를 거짓이면 false를 리턴한다.
8라인 : sqrt(n) 함수는 제곱근을 구하는 함수로서 #include <math.h> 를 해주어야 한다.
9라인 : for문을 보면 2부터 n의 제곱근인 k까지 검사한다. k까지만 검사해도 되는 이유는
#include<string>#include<vector>#include<iostream>usingnamespace std;
vector<vector<int>> result;
vector<int> v ={1,2,3,4,5};int len = v.size();
vector<int> sub;voidser(int k){if(k == len ){
result.push_back(sub);}else{
sub.push_back(v[k]);ser( k +1);
sub.pop_back();ser( k +1);}}intmain(){ser(0);for(int i =0; i < result.size(); i++){for(int k =0; k < result[i].size(); k++){
cout << result[i][k];}
cout <<"\n";}return0;}