「文字列」(2017/11/17 (金) 18:00:35) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*string
C++の標準ライブラリには文字列操作を便利にした string というものがあります。
従来の char* は単なる文字配列でしたが、stringは文字列操作のための演算子や関数が用意されています。&br()
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() で代入
**追加 結合
+= か + 演算子または .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番目 'e' を 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
合計 &counter(total)
今日 &counter(today)
昨日 &counter(yesterday)
*string
C++の標準ライブラリには文字列操作を便利にした string というものがあります。
従来の char* は単なる文字配列でしたが、stringは文字列操作のための演算子や関数が用意されています。&br()
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() で代入
**追加 結合
+= か + 演算子または .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
合計 &counter(total)
今日 &counter(today)
昨日 &counter(yesterday)
表示オプション
横に並べて表示:
変化行の前後のみ表示: