月ノ書

<C++>文字列と文字列操作

今回の記事でわかること
  • C言語的な文字列(C文字列)の使い方
  • std::string の基本と便利な操作
  • 文字列を扱うときの注意点

文字列とは

文字の並びを表すデータ型を文字列と呼び、C++ では大きく分けて2種類あります

C文字列

std::string

C文字列の基本

C言語と同じく char[] とヌル文字で表現される。扱いが面倒で初心者はバグりやすい印象

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

int main() {
    char str[20] = "Hello";
    cout << str << endl;

    strcat(str, " World");   // 文字列を連結
    cout << str << endl;

    cout << "length = " << strlen(str) << endl;

    return 0;
}

/* 出力結果
Hello
Hello World
length = 11
*/

C++ 文字列(std::string)

C++ なら、基本は std::string を使うのがおすすめで、長さも自動で管理される上、演算子や関数が便利です

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

int main() {
    string s = "Hello";
    cout << s << endl;

    s += " World";   // 連結(+ や += が使える)
    cout << s << endl;

    cout << "length = " << s.size() << endl;   // 長さ取得
    cout << "substr = " << s.substr(0, 5) << endl;  // 部分文字列
    cout << "find = " << s.find("World") << endl;   // 検索(インデックス返す)

    return 0;
}

/* 出力結果
Hello
Hello World
length = 11
substr = Hello
find = 6
*/

文字列の入出力

std::cin と std::getline の違いに注意!!!

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

int main() {
    string name;
    cout << "名前を入力してください: ";
    getline(cin, name);   // スペースを含めて読み込み

    cout << "こんにちは, " << name << " さん!" << endl;
    return 0;
}

/* 実行例
名前を入力してください: 〇〇
こんにちは, 〇〇 さん!
*/

学習進捗

0
Would love your thoughts, please comment.x