C++ 言語では string というものは, basic_string テンプレートであるので, 厳密にはクラスではない:
typedef basic_string<char> string;
basic_str.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <iostream>
#include <string>
using namespace std;
int main(){
string str1; // 空きの string
string str2("wtopia"); // 初期値としての "wtopia"
cout << str1 << endl;
cout << str2 << endl;
str1 = str2; // str2 の内容を str1 に代入
cout << str1 << endl;
return 0;
}
|
上記プログラムの実行結果は:
[wtopia cpp.stl]$ g++ -Wall -O2 -o basic_str basic_str.cpp
[wtopia cpp.stl]$ ./basic_str
wtopia
wtopia
basic_str2.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <iostream>
#include <string>
int main(){
using namespace std;
string str1("I love ");
string str2("you");
str1 += str2; // str1 の末尾に str2 を連結
cout << str1 << endl;
if ( str1 == "I love you") // 二つの文字列を比較
cout << "一致" << endl;
else
cout << "不一致" << endl;
cout << "str1 の文字数は" << str1.size() << endl; // 文字列の長さを出力
return 0;
}
|
上記プログラムの実行結果は:
[wtopia cpp.stl]$ g++ -Wall -O2 -o basic_str2 basic_str2.cpp
[wtopia cpp.stl]$ ./basic_str2
I love you
一致
str1 の文字数は10
注意:
string 型で管理している文字列を char * 型を要求する関数に渡すような場合, c_str() というメンバ関数を使うこと.
c_str.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <iostream>
#include <string>
int main(){
using namespace std;
string filename( "test.txt" );
FILE *fp = fopen( filename.c_str(), "r" );
fclose( fp ) ;
return 0;
}
|
str_access.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <iostream>
#include <string>
int main(){
using namespace std;
string str("wtopia");
str[0] = 'A';
str[1] = 'B';
cout << str << endl;
return 0;
}
|
上記プログラムの実行結果は:
[wtopia cpp.stl]$ g++ -Wall -O2 -o str_access str_access.cpp
[wtopia cpp.stl]$ ./str_access
ABopia
substr.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <iostream>
#include <string>
int main(){
using namespace std;
string str1("wtopia");
string str2 = str1.substr(3); // pia
string str3 = str1.substr(0, 3); // wto
cout << str1 << endl;
cout << str2 << endl;
cout << str3 << endl;
return 0;
}
|
上記プログラムの実行結果は:
[wtopia cpp.stl]$ g++ -Wall -O2 -o substr substr.cpp
[wtopia cpp.stl]$ ./substr
wtopia
pia
wto
文字列中から, 目的文字列を探すことができる.
文字列検索用の関数は 6 種類がある:
1. find() -> 指定した文字列が, 最初に現れる位置を返す
2. rfind() -> 指定した文字列が, 最後に現れる位置を返す
3. find_first_of() -> 指定した文字列の一部の文字が, 最初に現れる位置を返す
4. find_last_of() -> 指定した文字列の一部の文字が, 最後に現れる位置を返す
5. find_first_not_of() -> 指定した文字列の一部に含まれない文字が, 最初に現れる位置を返す
6. find_last_not_of() -> 指定した文字列の一部に含まれない文字が, 最後に現れる位置を返す
str_find.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <iostream>
#include <string>
int main(){
using namespace std;
string str("faadflasdfkasdfjljkjla1skwt");
string::size_type index = str.find("as"); // "as" を検索
if(index == string::npos)
cout << "検索に失敗した" << endl;
else
cout << str.substr(index) << endl;
return 0;
}
|
上記プログラムの実行結果は:
[wtopia cpp.stl]$ g++ -Wall -O2 -o str_find str_find.cpp
[wtopia cpp.stl]$ ./str_find
asdfkasdfjljkjla1skwt