C++: 문자열

index

#include <string>

string str = "0123456"; // 기본적인 생성자
str.size();             // 7
str.front();            // 첫 char, 0
str.back();             // 마지막 char, 6

추가/제거

추가: append, insert

string str = "0123456"
str.append("str");         // "0123456str"
str.append("01234", 2, 2); // "012345623", index:2부터 length:2개
str.insert(3, "str");      // "012str3456"

제거: clear, erase

string str = "0123456"
str.clear(); // ""

string::iterator iter1 = str.begin();
string::iterator iter2 = str.end();
iter1 += 1;
iter2 -= 1;

str.erase(3);     // "012"
str.erase(2, 2);  // "01456"
str.erase(iter1); // "023456"
str.erase(iter1, iter2); // "06"

수정/변환

수정: replace // @todo: replace

변환: substr

string str="0123456";
str.substr(3);        // "3456"
str.substr(3, 2);     // "34"

검색/비교

검색: find

string str = "0123456";
str.find("2");            // 2
auto pos = str.find("8"); // pos == string::npos

비교: compare

string str1 = "ab";
string str2 = "bc";
string str3 = "Ab";
string str4 = "Ac";
string str5 = "A";
string str6 = "A";
string str7 = "z";
string str8 = "";

// A.compare(B): A<B 인지, A>B 인지 검사, A<B라면 0보다 작은 값, A>B라면 1, A==B라면 0보다 큰 값
auto a1 = str1.compare(str2); // c<0, 첫 번째 char 부터 차례대로 검사: a < b 이므로
auto a2 = str1.compare(str3); // c>0, a > A
auto a3 = str3.compare(str4); // c<0, index=0, A == A, index=1, b < c
auto a4 = str4.compare(str5); // c>0, c > ""
auto a5 = str5.compare(str6); // c==0, A == A
auto a6 = str6.compare(str7); // c>0, A < z
auto a7 = str7.compare(str8); // c>0, z > ""