문자열

suyeon-jung·2021년 9월 23일
0

study

목록 보기
1/1

c++에서 문자열을 다루는 방법에 대해 정리한 내용이다.

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++ 스타일 문자열


C 스타일보다 안전(메모리 할당, 처리, 해제를 한 명령어로 가능)

  • 저장: string 클래스
#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++ 스타일의 조화로운 사용


  • CC++
#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;
}

0개의 댓글