hyunjin

int , string , char 형 변환 본문

개인 공부/C++

int , string , char 형 변환

_h.j 2021. 2. 16. 14:04
728x90

char  < - >  string


char -> string

#include <string>
char ch[20] = "hello world";
string str1(ch);
string str2 = ch;

1. string 생성자 이용해 생성 할 때 인자로 넘겨서 생성

2. char 배열 이름을 사용해서 대입 연사자 이용해 대입

 

string  - > char

//string -> char
string str = "HELLO WORLD";

cout<< str.c_str() << "\n";

char ch1[20];
strcpy(ch1, str.c_str()); // c_str로 string->char 후 strcpy로 char에 복사

 

str.c_str()

c_str() 함수 이용해 string을 char로 변환.

strcpy를 이용해 다른 char에 복사도 가능

 

string  ->  char*  (동적 할당)

string str = "hello world";

char *ch2 = new char[ str.size() + 1 ];
copy(str.begin(),str.end(),ch2);
strcpy(ch2 , str.c_str()); // copy or strcpy 상관없음
ch2[ str.size() ] = '\0'; // null 마지막에 넣어주기 
cout<< "str size " << str.size() <<endl;
cout<<ch2<< " size : "<< strlen(ch2)<<endl; //

const char* 

이 경우 수정 불가

 

char*

수정 가능 위해선 동적할당 통한 메모리 복사

끝에 Null 종료 문자 넣어주기!

(단 사용 완료 후 메모리 해제해야함.)

 

vector

string str = "Hi there";
vector<char> vc(str.begin(), str.end());
vc.puch_back('\0');

char* c = &*vc.begin();  // OR char* c = &vc[0]

vector로 해도 됨.

 

char <-> string 전체 코드

#include <bits/stdc++.h>

using namespace std;
int main(){
	char ch[256] = "hello world";
	string str = "HELLO WORLD";

	// char -> string
	string str1(ch);  // 방법1
	string str2 = ch;  // 2
	cout << str1 << "\n"; 
	cout << str2<< "\n";
	
	//string -> char
	cout<< str.c_str() << "\n";
	//c_str
	char ch1[20];
	strcpy(ch1, str.c_str()); // c_str로 string->char 후 strcpy로 char에 복사
	//copy
	char *ch2 = new char[ str.size() + 1 ];
	copy(str.begin(),str.end(),ch2);
	strcpy(ch2 , str.c_str());
	ch2[ str.size() ] = '\0'; // null 마지막에 넣어주기 
	cout<< "str size " << str.size() <<endl;
	cout<<ch2<< " size : "<< strlen(ch2)<<endl;// 
	
	
	return 0;
}

string <-> int


string -> int

#include <string>

string str_i = "123";
string str_d = "3.1415";

int i = stoi(str_i);
double f = stod(str_d);

printf("%d\n",i);
prtinf("%lf",str_d);

stoi  (string - > int)

stof  (string - > float)

stol  (string - > long int)

stod (string - > double)

 

원형

int stoi(const string& str, size_t* idx = 0, int base = 10)
두 번째 인자 뭐 잘안쓸 것 같은데 숫자 아닌 부분의 인덱스 리턴으로 나와서 저장해주나봐. 자세한건 참고 페이지 보자.

base : 진수

 

백준 2745 문제

기존 코드

//reverse https://blockdmask.tistory.com/363
#include <bits/stdc++.h>
using namespace std;
int main(){
	string s;
	int n,ans=0,tmp=1;
	cin >>s >>n;
	reverse(s.begin(),s.end());
	for(char c : s){
		ans = ans + tmp*( (c < 'A')? c-'0' : c-'A'+10);
		tmp*=n;
	}
	cout<<ans;
	return 0;
}

stoi 사용한 코드

//reverse https://blockdmask.tistory.com/363
#include <bits/stdc++.h>
using namespace std;
int main(){
	string s;
	int n;
	cin >>s >>n;
	cout<<stoi(s,0,n);
	return 0;
}

훨씬 간단. n진법 변환 가능

 

int -> string

#include <string>

int num1 = 10;
float num2 = 22.1f;

string str1 = to_string(num1);
string str2 = to_string(num2);

to_string

c++ 숫자에서 string 타입으로 변환

 


char <-> int


char -> int

 

int atoi (const char* cStr);

double atof (const char* cStr);

long int atol (const char* cStr);



int num = 0;
char cStr[30] = "2019";

//문자열 타입으로 출력.
printf("char* = %s\n", cStr);

//char* -> int
num = atoi(cStr);

//숫자 타입으로 출력.
printf("int   = %d\n", num);

 

 

int -> char

백준 11005 문제

 

그냥 프린트 할 때 putchar나 printf %c 하거나 (char) 붙이거나 등등


string <-> char* <-> int

 

 

참고

char string 변환

char,string,cstring 변환

int to string  to_string 함수에 대해서

string to 수

char* to int

 

 

 

 

 

 

 

728x90