【C++】std::stringの基本操作 | 代入・連結・比較の方法をまとめて解説

目次

はじめに

C++の**std::string**クラスは、C言語スタイルのchar配列が抱える煩雑さや危険性を解消し、文字列を安全で直感的に扱えるように設計されています。まるでintdoubleのような基本データ型のように、自然な構文で様々な操作が可能です。

この記事では、std::stringを使いこなす上で必須となる、以下の4つの基本的な操作方法を、サンプルコードと共にまとめて解説します。

  1. 入出力: cin / cout
  2. 代入: =
  3. 連結: +
  4. 比較: ==, !=, <, > など

1. 入出力

std::stringオブジェクトは、標準入出力ストリーム (cin, cout) と >> / << 演算子を使って、簡単に入出力できます。

サンプルコード

#include <iostream>
#include <string>

using namespace std;

int main() {
    string name;
    
    cout << "名前を入力してください: ";
    cin >> name; // スペースまでを読み取る
    
    cout << "こんにちは、" << name << "さん!" << endl;
    
    return 0;
}

2. 代入

=(代入演算子)を使って、stringオブジェクトに新しい文字列を設定したり、他のstringオブジェクトの内容をコピーしたりできます。

サンプルコード

#include <iostream>
#include <string>
#include <utility> // move

using namespace std;

int main() {
    string text1;
    text1 = "Hello"; // 文字列リテラルを代入

    string text2 = text1; // text1の内容をtext2にコピー

    string temp_text = "World";
    string text3 = move(temp_text); // C++11以降: ムーブ代入
    
    cout << "text1: " << text1 << endl;
    cout << "text2: " << text2 << endl;
    cout << "text3: " << text3 << endl;
    
    return 0;
}

3. 連結

+(加算演算子)や +=(複合代入演算子)を使って、文字列同士を簡単に連結できます。

サンプルコード

#include <iostream>
#include <string>

using namespace std;

int main() {
    string str1 = "Modern";
    string str2 = " C++";
    
    // + 演算子で連結
    string combined = str1 + str2; // -> "Modern C++"
    
    // 文字列リテラルやcharとも連結可能
    combined = combined + " is powerful.";
    
    // += 演算子で追記
    combined += "!!";
    
    cout << combined << endl;
    
    return 0;
}

4. 比較

比較演算子(==, !=, <, >, <=, >=)を使って、stringオブジェクト同士の辞書順での比較ができます。

サンプルコード

#include <iostream>
#include <string>

using namespace std;

int main() {
    string s1 = "apple";
    string s2 = "orange";
    string s3 = "apple";

    cout << boolalpha; // boolをtrue/falseで表示
    
    cout << s1 << " == " << s3 << " -> " << (s1 == s3) << endl; // true
    cout << s1 << " != " << s2 << " -> " << (s1 != s2) << endl; // true
    cout << s1 << " < " << s2 << " -> " << (s1 < s2) << endl;  // true (辞書順で 'a' < 'o')
    
    return 0;
}

解説: 文字列の比較は、先頭の文字から順に、文字コードの大小で辞書的に行われます。


まとめ

今回は、C++のstd::stringにおける、最も基本的な4つの操作(入出力、代入、連結、比較)を解説しました。std::stringは、これらの演算子が適切にオーバーロードされているため、組み込みの数値型とほとんど変わらない、直感的でシンプルな構文で文字列を安全に扱うことができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次