実験で正文/非文判定をするプログラムを書いた時に役に立ったものをつらつらとまとめていく。
std::ifstream in("filename.txt");
std::cin.rdbuf(in.rdbuf)
空白, カンマ, 改行ごとに区切ってくれるため、次のようにして単語を一つ一つ読み取れる
std::string str;
while(cin >> str){
// 任意の処理
}
// 2文字毎に何かしたい場合
std::string str1, str2;
while(cin >> str1 >> str2){
// 任意の処理
}
std::ifstream ifs(filename);
std::string str, line;
while(std::getline(ifs, line)){ // 第3引数に区切る文字を指定できる。
std::stringstream ss(line);
while(ss >> str)
// 任意の処理
}
str.back(); // 末尾を参照
str.pop_back(); // 末尾を削除
可変長配列. 便利過ぎて感動した
vector.pushback(hoge); // 末尾に追加
vector.size(); // サイズ参照
2つの異なる型の値を保持する組みを作りたいとき。
// 一例
vector<pair<string, string> > hoge;
hoge.first; // 前を参照
hoge.second; // 後ろを参照
hoge.push_back(make_pair(str1, str2)); // vector"hoge"にstr1, str2の組を末尾に追加
N個の組を作る事が可能.
vector<tuple<string, string, string> > hoge;
hoge.push_back(make_pair(str1, str2, str3)); // vector"hoge"にstr1, str2, str3の組を末尾に追加
get<i>(hoge[j]); // vector:hogeのj番目の, 要素jを参照