-
C++) std stringC++ 2022. 11. 19. 16:09
https://www.inflearn.com/course/following-c-plus/dashboard
홍정모의 따라하며 배우는 C++ - 인프런 | 강의
만약 C++를 쉽게 배울 수 있다면 배우지 않을 이유가 있을까요? 성공한 프로그래머로써의 경력을 꿈꾸지만 지금은 당장 하루하루 마음이 초조할 뿐인 입문자 분들을 돕기 위해 친절하고 자세하
www.inflearn.com
기존 C에서는 문자를 하나하나 char type으로 배열 형태로 저장한다.
const char my_strs[] = "Hello, World";
C++ 에서는 사용자 정의 자료형으로 string을 만들어놔서 더욱 간편하게 사용할 수 있다.
const std::string my_hello = "Hello, World";
나이와 이름을 입력받고 출력하는 프로그램을 만든다고 가정해보자.
#include <iostream> #include <string> #include <limits> int main() { using namespace std; cout << "Your age ? : "; int age; cin >> age; cout << "Your name ? : "; string name; cin >> name; cout << name << " " << age << endl; return 0; }
위와 같이 코드를 작성하게 될 경우 이름을 입력하는 칸에서 공백이 있을 경우 입력을 하나 더 하는 것으로 간주하기 때문에 제대로 된 출력이 안 나온다.
choo gro 입력 시 choo만 문자열로 들어가고 gro는 버퍼에 남아있는 상태
위와 같은 문제를 해결하기 위해선 공백까지 포함하는 라인 전체를 입력으로 받아야 한다.
이때 std::getline()을 통해 문자열을 입력받으면 해결할 수 있다.
#include <iostream> #include <string> #include <limits> int main() { using namespace std; cout << "Your age ? : "; int age; cin >> age; //cin.ignore(32767, '\n'); //줄바꿈이 있을 때까지 버퍼를 제거해준다. cin.ignore(numeric_limits<streamsize>::max(), '\n'); cout << "Your name ? : "; string name; //cin >> name; std::getline(cin, name); // 공백까지 포함해서(라인) 입력받을 수 있음 cout << name << " " << age << endl; return 0; }
주의할 점은 문자열을 입력받기 전 cin.ignore()로 줄 바꿈이 일어날 때까지 버퍼에 남아있는 것들을 제거해줘야 정상적으로 입력을 받을 수 있다.
문자열끼리의 덧셈
내장된 기능으로 string끼리 더할 수도 있다. (append)
#include <iostream> #include <string> int main() { using namespace std; string a("Hello, "); string b("World"); string hw = a + b; // append hw += " I'm good"; cout << hw << endl; // Hello, World I'm good cout << hw.length() << endl; // 문자열의 길이 확인, 21 return 0; }
'C++' 카테고리의 다른 글
C++) std::cin (0) 2022.11.19 C++) 난수(Random number) 만들기 (0) 2022.11.19 C++) 전역 변수, 정적 변수, 내부 연결, 외부 연결 (0) 2022.11.18 C++) 비트플래그와 비트마스크 (0) 2022.11.18 C++) 비트단위 연산자 Bitwise operators (0) 2022.11.18