Skip to content

2. 문자열


1. 문자열 비교

#include <iostream>
#include <string>
using namespace std;

int main() {
    string seven_war = "임진왜란";
    string korea_war = "한국전쟁";

    if (seven_war.compare(korea_war) == 0)
        cout << "같은 문자열입니다." << endl;
    else
        cout << "다른 문자열입니다." << endl;

    return 0;
}
다른 문자열입니다.


2. 문자열 조회

#include <iostream>
#include <string>
using namespace std;

int main() {
    string baekhap_war = "백합벌 전투: 백제 왕자 부여창의 일기토로 유명한 전투";

    int rtn = baekhap_war.find("부여창");

    if (rtn > 0)
        cout << "문자열을 찾았습니다. 위치는 " << rtn << "입니다." << endl;
    else
        cout << "문자열을 찾을 수 없습니다." << endl;

    return 0;
}
문자열을 찾았습니다. 위치는 32입니다.


3. 문자열 길이

#include <iostream>
#include <string>
using namespace std;

int main() {
    string jinduck_name = "김승만";
    string jinsung_name = "kim man";

    cout << "진덕여왕 이름 길이: " << jinduck_name.length() << endl;
    cout << "진성여왕 이름 길이: " << jinsung_name.length() << endl;

    return 0;
}
진덕여왕 이름 길이: 9
진성여왕 이름 길이: 7


4. 문자열 대소문자 변환

#include <algorithm>
#include <iostream>
#include <string>
using namespace std;

int main() {
    std::string silla = "divided into th Three Kindoms.";
    std::string joseon = "Yi Seong-gye, established Joseon in 1392.";

    transform(silla.begin(), silla.end(), silla.begin(), (int (*)(int))toupper);
    transform(joseon.begin(), joseon.end(), joseon.begin(), (int (*)(int))tolower);

    char lower_ch = 'g';
    char upper_ch = 'B';

    lower_ch = toupper(lower_ch);
    upper_ch = tolower(upper_ch);

    cout << "문자열 대문자로 변환: " << silla << endl;
    cout << "문자열 소문자로 변환: " << joseon << endl;
    cout << "문자 대문자로 변환: " << lower_ch << endl;
    cout << "문자 소문자로 변환: " << upper_ch << endl;

    return 0;
}
문자열 대문자로 변환: DIVIDED INTO TH THREE KINDOMS.
문자열 소문자로 변환: yi seong-gye, established joseon in 1392.
문자 대문자로 변환: G
문자 소문자로 변환: b


5. 문자열 병합

#include <iostream>
#include <string>
using namespace std;

int main() {
    string king = "조선 세종";
    string favorite1 = "고기";
    string favorite2 = "야근";

    string king_info = "";

    king_info += king;
    king_info += "은 ";
    king_info += favorite1;
    king_info.append("와 ");
    king_info.append(favorite2);
    king_info.append("을 좋아했습니다.");

    cout << king_info << endl;

    return 0;
}
조선 세종은 고기와 야근을 좋아했습니다.


6. 문자열 추가

#include <iostream>
#include <string>
using namespace std;

int main() {
    string sentence = "I coding";
    sentence.insert(2, "hate ");
    cout << sentence << endl;

    sentence.insert(7, "or like ");
    cout << sentence << endl;

    return 0;
}
I hate coding
I hate or like coding


7. 문자열 일부 제거

#include <iostream>
#include <string>
using namespace std;

int main() {
    string sentence = "I hate coding.";

    sentence.erase(0, 7);

    cout << "I like " << sentence << endl;

    return 0;
}
I like coding.


8. 문자열 이동

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main() {
    string str1 = "I like coding";
    string str2 = move(str1);

    cout << "str1: " << str1 << endl;
    cout << "str2: " << str2 << endl;

    vector<int> v1 = {1, 2, 3};
    vector<int> v2 = move(v1);

    cout << "v1 size: " << v1.size() << endl;
    cout << "v2 size: " << v2.size() << endl;

    return 0;
}
str1:
str2: I like coding
v1 size: 0
v2 size: 3


9. 특정 문자 제거

#include <iostream>
#include <string>
using namespace std;

int main() {
    string sentence = "I like coding";

    sentence.erase(remove(sentence.begin(), sentence.end(), ' '), sentence.end());

    cout << sentence << endl;

    return 0;
}
Ilikecoding


10. 문자열 일부 교체

#include <iostream>
#include <string>
using namespace std;

int main() {
    string sentence = "I like coding";
    string find_str = "coding";
    string replace_str = "history";

    sentence.replace(sentence.find(find_str), find_str.length(), replace_str);

    cout << sentence << endl;

    return 0;
}
I like history


11. 문자열 정수 변환

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str1 = "10";
    string str2 = "2.456";
    string str3 = "456 문자열";

    int num1 = stoi(str1);
    int num2 = stoi(str2);
    int num3 = stoi(str3);

    cout << num1 << ", " << num2 << ", " << num3 << endl;

    return 0;
}
10, 2, 456


12. 문자열 숫자 변환

#include <iostream>
#include <sstream>
using namespace std;

int main() {
    stringstream ss;

    double number1 = 0.0;

    ss << "1.2,2.6-3.8!4.7=8.9";

    cout << "== string to double ==" << endl;
    while (!ss.eof()) {
        ss >> number1;
        ss.ignore();

        cout << number1 << ", ";
    }

    ss.clear();
    ss.str("");
    ss << "1,"
       << "2" << 3 << " " << 4;

    int number2 = 0;

    cout << endl
         << "== string to int ==" << endl;
    while (!ss.eof()) {
        ss >> number2;
        ss.ignore();

        cout << number2 << ", ";
    }

    cout << endl;

    return 0;
}
== string to double ==
1.2, 2.6, 3.8, 4.7, 8.9,
== string to int ==
1, 23, 4,


13. 문자열 정렬

#include <iostream>
#include <string>
using namespace std;

int main() {
    string sort_str1 = "gojoseon";
    string sort_str2 = "AaBbCcDdEe";

    sort(sort_str1.begin(), sort_str1.end());
    sort(sort_str2.begin(), sort_str2.end());

    cout << "소문자만 정렬: " << sort_str1 << endl;
    cout << "대소문자만 정렬: " << sort_str2 << endl;

    return 0;
}
소문자만 정렬: egjnooos
대소문자만 정렬: ABCDEabcde


14. 문자열 반전

#include <algorithm>
#include <iostream>
#include <string>
using namespace std;

int main() {
    string str = "gfedcba";

    reverse(str.begin(), str.end());

    cout << str << endl;

    return 0;
}
abcdefg


15. 숫자 문자열 변환

#include <iostream>
#include <string>
using namespace std;

int main() {
    int number1 = 10;
    double number2 = 67.8;

    string no_str1 = to_string(number1);
    string no_str2 = to_string(number2);

    cout << "number1: " << number1 << endl;
    cout << "number2: " << number2 << endl;

    return 0;
}
number1: 10
number2: 67.8


16. 정수와 문자의 최대/최소값

#include <algorithm>
#include <iostream>
#include <string>
using namespace std;

int main() {
    auto result1 = min(1, 5);
    auto result2 = max('a', 'z');

    cout << result1 << ", " << result2 << endl;

    auto result3 = minmax({'a', 'n', 'z'});
    auto result4 = minmax({1, 2, 3});

    cout << result3.first << ", " << result3.second << endl;
    cout << result4.first << ", " << result4.second << endl;

    return 0;
}
1, z
a, z
1, 3