Programming Language/C++

[C++] ๋ฌธ์ž์—ด ์ •๋ฆฌ

lingk 2022. 3. 22. 20:08

string ํ—ค๋”

#include <string>

 

๐ŸŒ€ ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™” ์˜ˆ์‹œ

//์ƒ์„ฑ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”
string str1 = "Hello World!");
string str2("Hello World!");

//์ƒ์„ฑํ•œ ํ›„ ์ดˆ๊ธฐํ™”
string str3;
str3 = "Hello World!";

//๋‹ค๋ฅธ ๋ฌธ์ž์—ด๋กœ ์ดˆ๊ธฐํ™”
string str4(str3);

 

 

๐ŸŒ€ ๋ฉค๋ฒ„ํ•จ์ˆ˜

 

๋ฌธ์ž์—ด์˜ ๋ฌธ์ž ์ ‘๊ทผ

string str = "Hello World!"

// ๋ฐฐ์—ด์ฒ˜๋Ÿผ Index๋กœ ์ ‘๊ทผ
str[0]; // 'H' ๋ฐ˜ํ™˜. ๋ฐ˜ํ™˜๋œ ๋ฌธ์ž๋Š” charํ˜•
str.at(0); // 'H' ๋ฐ˜ํ™˜. ๋ฐ˜ํ™˜๋œ ๋ฌธ์ž๋Š” charํ˜•

// ๋งจ ์•ž ๋ฌธ์ž ๋ฐ˜ํ™˜
str.front();

// ๋งจ ๋’ค ๋ฌธ์ž ๋ฐ˜ํ™˜
str.back();

 

๋ฌธ์ž์—ด์˜ ๊ธธ์ด ๋ฐ˜ํ™˜

string str = "Hello World!"

str.size(); // 12
str.length(); // 12

 

๋ฌธ์ž์—ด->์ˆซ์ž, ์ˆซ์ž->๋ฌธ์ž์—ด

string str_i = "1";
string str_d = "1.23";
string str_f = "3.14";

int i_str = stoi(str_i); // "1"์„ intํ˜• 1๋กœ ๋ณ€ํ™˜
double d_str = stod(str_d); // "1.23"์„ doubleํ˜• 1.23์œผ๋กœ ๋ณ€ํ™˜
float f_str = stof(str_f); // "3.14"๋ฅผ floatํ˜• 3.14๋กœ ๋ณ€ํ™˜
int num = 123;

string s_num;
s_num = to_string(num); // 123์ด "123"์œผ๋กœ ๋ณ€ํ™˜
// ๋ฌธ์ž->์ˆซ์ž
char c1 = '3';
int i1 = c - '0'; // i1์—๋Š” ์ˆซ์ž 3์ด ์ €์žฅ

// ์ˆซ์ž->๋ฌธ์ž
int i2 = 1;
char c2 = 1 + '0'; // c2์—๋Š” '1'์ด ์ €์žฅ

 

string ์‚ฝ์ž…, ์ถ”๊ฐ€, ์‚ญ์ œ

// str1 ๋’ค์— str2๋ฅผ ๋ถ™์ž„
str1.append(str2);

// str1 ๋’ค์— 'str2์˜ n index๋ถ€ํ„ฐ m๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ์ด์–ด ๋ถ™์ž„
str1.append(str2, n, m);

// str1 ๋’ค์— n๊ฐœ์˜ 'a'๋ฅผ ์ด์–ด ๋ถ™์ž„
str1.append(n, 'a'); 

// n๋ฒˆ์งธ index์•ž์— str2์„ ์‚ฝ์ž…
str1.insert(n, str2);

// n๋ฒˆ์งธ index๋ถ€ํ„ฐ k๊ฐœ์˜ ๋ฌธ์ž๋ฅผ str2๋กœ ๋Œ€์ฒด
str1.replace(n, k, str2);

// ๋ฌธ์ž์—ด ์ดˆ๊ธฐํ™”
str1.clear();
str1.erase();

// n~m index์˜ ๋ฌธ์ž์—ด ์ œ๊ฑฐ
str1.erase(n, m);

// str1์˜ ๋งจ๋’ค์— ๋ฌธ์ž 'c'๋ฅผ ๋ถ™์ž„
str1.push_back(c);

// str1์˜ ๋งจ๋’ค ๋ฌธ์ž ์ œ๊ฑฐ
str1.pop_back();

// str1์— str2ํ• ๋‹น
str1.assign(str2);

 

๊ธฐํƒ€ string ๋ฉค๋ฒ„ ํ•จ์ˆ˜

str.find("abcd"); // "abcd"๊ฐ€ str์— ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด ์ฐพ์€ ๋ถ€๋ถ„์˜ index ๋ฐ˜ํ™˜
//find๋Š” ์ฐพ์ง€ ๋ชปํ•˜๋ฉด npos๋ฅผ returnํ•œ๋‹ค.
if(str.find("abcd") != string::npos){} // ๋ฌธ์ž์—ด์ด ํฌํ•จ๋˜์—ˆ๋Š”์ง€ ์ฐพ๋Š” ์กฐ๊ฑด๋ฌธ?

str.substr(); // str ์ „์ฒด ๋ฐ˜ํ™˜
str.substr(n); // str์˜ n๋ฒˆ์งธ index๋ถ€ํ„ฐ ๋๊นŒ์ง€๋ฅผ ๋ถ€๋ถ„๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜
str.substr(n, k); // str์˜ n๋ฒˆ์งธ index๋ถ€ํ„ฐ k๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ๋ถ€๋ถ„๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜

str1.compare(str2); // str1๊ณผ str2๊ฐ€ ๊ฐ™์€์ง€๋ฅผ ๋น„๊ต. ๊ฐ™์œผ๋ฉด 0, str1<str2 ์ธ ๊ฒฝ์šฐ ์Œ์ˆ˜, str1>str2 ์ธ ๊ฒฝ์šฐ ์–‘์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

swap(str1, str2); // str1๊ณผ str2๋ฅผ ๋ฐ”๊ฟ”์คŒ. reference

isdigit(c); // c๊ฐ€ ๋ฌธ์ž์ธ์ง€
isalpha(c); // c๊ฐ€ ์•ŒํŒŒ๋ฒณ์ธ์ง€
toupper(c); // c๋ฅผ ๋Œ€๋ฌธ์ž๋กœ
tolower(c); // c๋ฅผ ์†Œ๋ฌธ์ž๋กœ

 

 

Split ํ•จ์ˆ˜

ํƒ€์–ธ์–ด๋“ค์€ splitํ•จ์ˆ˜๋ฅผ ์ง€์›ํ•˜์—ฌ ๋ฌธ์ž์—ด์ฒ˜๋ฆฌ๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

C++์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ splitํ•จ์ˆ˜๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฏธ๋ฆฌ ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์ตํ˜€๋‘๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

 

splitํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” input, delimiter์ด๋‹ค. input์—๋Š” ์ž๋ฅผ ๋ฌธ์ž์—ด์„, delitmiter์—๋Š” ์ž๋ฅผ ๊ธฐ์ค€์ด ๋˜๋Š” ๋ฌธ์ž๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

 

* stringstream์€ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ƒ๊ฐํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.

vector<string> split(string input, char delimiter)
{
    vector<string> answer;
    stringstream ss(input);
    string tmp;
    
    while(getline(ss, tmp, delimiter))
        answer.push_back(tmp);
    return answer;
}

int main()
{
    vector<string> ans = split("a b c d e ", ' ');
    for(int i = 0;i<ans.size();i++)
    {
        cout<<ans[i]<<endl;
    }
}

๋ฐ˜์‘ํ˜•

'Programming Language > C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[C++]ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ  (0) 2020.10.17