<개인공부>/[C++]

[C++] string 클래스 변환(atoi, c_str()) 등 정리

BlockDMask 2017. 7. 11. 07:00
반응형
  • C++에서 string, char *, int 간의 변환에 대해서 알아보겠습니다.

(char* -> int 로 바꾸는 것을 보고싶다면, [바로가기])

(string -> int 로 바꾸는 것을 보고싶다면, [바로가기])

(int -> string 으로 바로 바꾸는 것을 보고싶다면 [바로가기])

(C++ string에 대한 총정리가 보고싶다면 [바로가기])


1) 함수 설명

  • int atoi (const char * str)
    헤더파일(C) : <stdlib.h>

    헤더파일(CPP) : <cstdlib>
    설명 : C style의 문자열을 입력받아서 int (숫자) 타입으로 변환하여 리턴한다.

  • std::string c_str()
    반환형이 char * 이므로, 해당하는 string의 첫번재 문자의 주소값(포인터)를 반환합니다.

    사용방법은 아래에 나와있습니다.

2) TEST

  • 헤더파일 : <cstdlib>, <string>, <iostream>

  • 이름공간 : using namespace std;f

{Test 1} char* --> string 

  • C style의 char * 형을 C++ style의 string 으로 변환.

1
2
3
4
5
char * cStr = "Cstring";
string cppStr = cStr;
 
cout << "[test1] : char * --> string " << endl;
cout << "==> cppStr : " << cppStr << endl << endl;
cs


Test 1 : 결과


{Test 2} string --> char *
  • C++의 string을 C style의 char * 형으로 변환.
1
2
3
4
5
6
string cppStr = "CPPstring";
const char * cStr2 = cppStr.c_str();
 
cout << "[test2] : string --> char *" << endl;
printf("==> printf > cStr2 : %s\n", cStr2);
cout << "==> cout > cStr2 : " << cStr2 << endl << endl;
cs


Test 2 : 결과

{Test 3} char * --> int
  • C style의 char * 를 int 타입으로 변환.
1
2
3
4
5
char * cStr = "20170711";
int num = atoi(cStr);
 
printf("printf : %d\n"++num);  //증가 후 출력.
cout <<"cout : "<< ++num << endl;//증가 후 출력
cs


Test 3 : 결과



{Test 4} string --> char * --> int (한번에 int로 변환)
  • C++의 string을 int 타입으로 한번에 변환.
1
2
3
4
5
string s = "2017";
int num = atoi(s.c_str());
 
printf("printf : %d\n"++num);     //증가 후 출력
cout << "cout : " << ++num << endl//증가 후 출력.
cs

Test 4 : 결과


**C++에서 string을 공부하다가, string 변환에 대해서 테스트 해보고 정리 해보았습니다.
**char * 는 C/C++ 둘다 존재 하므로 C style이라고 언급하였고, 
**string 클래스는 C++에만 존재하므로 C++ style이라고 언급하였습니다.
- 문자열을 다룰때
C에서는 char * 형으로 다루고, C++에서는 string으로 다루기 때문에 C style, C++ style이라고 언급하였습니다.
만약 이러한 표현이 불편하시다면, 댓글로 남겨주시면 추후 수정하도록 하겠습니다. 


반응형