C-string
c-string을 사용하려면 <cstring> 헤더를 include합니다. c언어는 문자열을 하나의 독립적인 데이터타입으로 보기보다는 문자들의 sequence로 보는 구조입니다. 여러개의 문자를 한꺼번에 저장하는 것입니다. string이라는 것을 독립적인 배열보다는 문자 배열이라고 보는 것입니다.
null 문자('\0') 로 끝나는 char 타입 배열 .
char str[6] = {'h', 'e', 'l', 'l', 'o', '\0'};
배열은 충분히 잡고 앞에 저장하는 방식으로 사용을 하지만 그럴 때 문제점이 뒤에 있는 것에 빈 쓰레기값이 써져 있을테니 이 배열에 저장되어 있는 문자열들을 다룰 때 어디까지가 저장되어 있는 문자열인지 판단할 수 없습니다.
그래서 배열을 다룰 때 크기는 max로 잡지만 정수들을 저장할 때는 의미있는 개수를 기억하고 있어야합니다. 그런데 그걸 기억하는 것은 굉장히 번거로운 일이기 때문에 실제의 끝에 '\0' (=NULL) 문자를 집어넣습니다.
string은 문자열의 복사, 비교, 수정 등 다양한 문자열을 제공합니다.
String class(C++)
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
string str1 = "John Doe";
string str2("Nam gu, Ulsan, Korea");
string name = str1;
string address(str2);
cout << str << " " << str1 << " " << str2 << " "
<< name << " " << address << endl;
string str3 = { "Hello World" };
string str4{ "Hello World" };
string str5{ str3 };
cout << str3 << " " << str4 << " " << str5 << endl;
return 0;
}
string은 이렇게 다양한 식으로 정의가 가능합니다. " " 를 해서 써줄 수도 있고 괄호를 넣어줄 수도 있고 다른 string의 변수를 가져올 수도 있습니다. 소괄호로 할 수 있는 것은 {} 로도 가능합니다.
밑에 보시면 str3, str4, str5 도 정상적으로 string을 가질 수 있습니다.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string text;
while (true) {
getline(cin, text);
if (text == "exit")
break;
cout << text << ":" << text.length() << endl;
}
return 0;
}
string을 입력해주긴 위해선 getline이 필요합니다. getline은 말 그대로 한 라인을 출력해주는 것인데요. 지정한 문자가 나올 때까지 읽어주는 것입니다.
getline은 라인 전체를 한 번에 읽어서 두 번째 매개변수인 text에 저장해줍니다. 줄바꿈 문자 자체는 저장하지 않습니다.
getline(cin, text); 이것은 한 라인을 읽는 getline입니다. 하지만 특정한 문자가 나올 때까지 읽고 싶을 때는 하나를 더 추가해주면 되는데요.
getline(cin, text, '\t'); 이렇게 해주면 '\t'문자를 칠 때까지 거기를 라인의 끝으로 인식하고 그것 앞까지 읽어서 라인을 저장하는 것입니다.
이 getline이 꼭 line을 읽는 것에 한정되지 않고 특정한 문자를 지정해서 구분자로 이용해서 입력 텍스트에서 지정한 문자가 나오기 전까지를 다 읽어서 그 전체를 하나의 문자로 읽어주고 반복해서 읽는 것이 가능하다는 점 아시면 됩니다.
'IT 프로그래밍 > C++' 카테고리의 다른 글
[따배시 5.4] goto 반복문 while (0) | 2024.03.23 |
---|---|
[4.8 ~ 5.0]영역 제한 열거형(열거형 클래스) ,자료형에게 가명 붙여주기, 구조체 (0) | 2024.03.22 |
[따배시 2.6] 논리 연산자 Logical Operators (0) | 2024.03.15 |
[C++] 두 날짜 간의 어느 것이 더 이른지 비교하는 프로그램 작성 (0) | 2024.03.09 |
MAX MIN을 이용한 양의 정수 n개 배열 최대 최소 C++ (0) | 2024.03.09 |