c++
에서 문자열을 다루는 방법에 대해 정리한 내용이다.
c++
에서 제공하는 함수 사용(ex. strlen()
)#include <iostream>
#include <cstring> // 문자열 관련 함수
using namespace std;
int main(){
// src는 첫번째 문자의 주소가 됨
char src[] = "Handbit";
// 문자열 길이(strlen은 null문자를 제외한 길이 반환)
int len = strlen(src);
char* dest = new char[len+1];
// 문자열 복사(뒤쪽 문자열을 앞 문자열에 복사)
strcpy(dest, src);
// 문자열 결합
strcat(dest, src);
// 문자열 비교(0이면 같음, 아니라면 같지 않음)
strcmp(dest, " ");
// 메모리 해제
delete[] dest;
dest = NULL;
return 0;
}
사용
char* s
char 변수의 주소
문자열의 첫번째 바이트 주소
→ 알 수 없음, 개발자간 약속
→ cout 클래스에서도 문자열이라고 인식해서 주의해야 함
char c = 'A';
&c
char s[] = "string";
s = &s[0]
C
스타일보다 안전(메모리 할당, 처리, 해제를 한 명령어로 가능)
#include <iostream>
#include <string>
using namespace std;
int main(){
string s = "string";
cout << s << "\n";
// 새 문자열
string new;
// 문자열 복사
new = s;
// 문자열 길이
int len = s.size();
// 문자열 결합
cout << s + new;
// 문자열 비교
cout << (s == "hello");
// 문자열 찾기(오프셋 반환)
s.find("t")
// 문자열 일부 얻기
string ext = s.substr(len - 3, 3);
return 0;
}
C
→ C++
#include <iostream>
#include <string>
using namespace std;
int main() {
char cstyle[] = "cstyle";
string cppstyle;
// 문자열 복사(별개의 복사본 생성)
cppstyle = cstyle;
return 0;
}
C++
→ C
#include <iostream>
#include <string>
int main(){
string cppstyle = "cstyle";
const char* cstyle == NULL;
// c_str 함수는 C스타일의 문자열 주소 반환(only read)
cstyle = cppstyle.c_str();
return 0;
}
#include <iostream>
#include <string>
int main(){
char cs[20];
string cpps;
cin >> cs;
cin >> cpps;
// 공백 있는 문자열(c, c++)
cin.getline(cs, 20);
getline(cin, cpps);
return 0;
}