Skip to content

Instantly share code, notes, and snippets.

@msymt
Last active March 7, 2020 05:33
Show Gist options
  • Save msymt/bca750d90995f3f05e34fbda6c4ba602 to your computer and use it in GitHub Desktop.
Save msymt/bca750d90995f3f05e34fbda6c4ba602 to your computer and use it in GitHub Desktop.
オレオレ用C++のtipsのようなもの

C++の入出力やデータを扱う上で役に立ったもの

実験で正文/非文判定をするプログラムを書いた時に役に立ったものをつらつらとまとめていく。

テキストファイルからデータを読み込

std:cin.rdbuf

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){
  // 任意の処理
}

1行ずつ読み取り、スペース毎に単語を読み取る場合

std::ifstream ifs(filename);
std::string str, line;
while(std::getline(ifs, line)){ // 第3引数に区切る文字を指定できる。
  std::stringstream ss(line);
  while(ss >> str)
    // 任意の処理
}

std::string型の扱い

str.back(); // 末尾を参照
str.pop_back(); // 末尾を削除

std::vectorの扱い

可変長配列. 便利過ぎて感動した

vector.pushback(hoge); // 末尾に追加
vector.size(); // サイズ参照

std:pair

2つの異なる型の値を保持する組みを作りたいとき。

// 一例
vector<pair<string, string> > hoge;
hoge.first; // 前を参照
hoge.second; // 後ろを参照

hoge.push_back(make_pair(str1, str2)); // vector"hoge"にstr1, str2の組を末尾に追加

std:tuple

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を参照

参考

https://qiita.com/iwato/items/afa1631f231d80d9bc18

https://cpprefjp.github.io/reference/utility/pair.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment