C++スコーラ

文字列

最終更新:

cschola

- view
管理者のみ編集可

string

C++の標準ライブラリには文字列操作を便利にした string というものがあります。
従来の char* は単なる文字配列でしたが、stringは文字列操作のための演算子や関数が用意されています。

stringを使うには<string>をincludeします。
#include <string>
string は std に含まれているため std::string でアクセスします。

初期化

string の初期化の内基本的な2種類を紹介します。
std::string str;
std::string str("はろー わーるど!");
このほかにも多くの初期化方法が用意されています。

代入

文字列の割り当てには = 演算子か .assign() を使います。
std::string str;
str = "はろー わーるど!";	// = で代入
str.assign("はろー わーるど!");	// .assign() で代入

追加 結合

  1. = か + 演算子または .append() を使うことで文字列の後ろに他の文字列を追加できます。
std::string str;
str = "はろー";		// "はろー"を代入
str += " わーるど";	// "わーるど" を = で追加
str.append("!");	// "!" を .append()で追加

比較

== != < > <= >= を使い文字列同士を比較することが出来ます。
また .compare() を使うと比較結果を戻り値で返してくれます。
std::string str1("ABC");	// str1を "ABC" で初期化して作成
std::string str2 = str1;	// str1 をコピーして str2を作成

// str1 と str2 を比較
if(str1 == str2){
	std::cout << str1 + "と" + str2 + "は同じ" << std::endl;
}

文字の取得

文字列から文字を取り出すには [] 演算子か .at() を使います。
std::string str("abcdef");	// str を "abcdef" で初期化して作成

char c1 = str[0];	// strの0番目 'a' を c1 に入れる
char c2 = str.at(5);	// strの5番目 'f' を c2 に入れる

std::cout << c1 << c2 << std::endl;	//c1 と c2 を表示

文字列の取得

.substr() を使うと指定した部分の文字列が返ってきます。
第1引数が取り出す位置で、第2引数が取り出す長さです。
std::string str1("Hello World!!");
std::string str2;

str2 = str1.substr(6,5);  // str の6番目から5文字 "World" を抜き出して str2 に代入

std::cout << str2 << std::endl;	// str2を表示
第2引数を省略すると文字列の最後まで取り出されます。

文字列の長さを調べる

文字列の長さを調べるには .length() か .size() を使います。
これら2つは同じ意味です。
std::string str("abc");

// str の長さを表示
std::cout << str.length()<< std::endl << str.size() << std::endl;
日本語は2バイト文字という点に気をつけましょう。

文字列が空かどうか調べる

.empty() を使うと、文字列が空のとき true を返し、それ以外のとき false を返します。

練習問題

次のようなプログラムを作ってください
第1問
 ユーザーからの入力を文字列に割り当て
 "Apple"という文字と比較する。
 また比較した結果によりメッセージを出力する。

第2問
 ユーザーからの入力を文字列に割り当て、
 長さが5以上の文字列が入力されるまで繰り返す
abc
5文字以上入力してください
hello
オッケー

testcounter
合計 -
今日 -
昨日 -

タグ:

string
目安箱バナー