C++のfstreamを使うと空白をセパレータとして読む
この辺はライブラリの関数を探した方がいいと思うが、一応注意書き。
fstreamは空白をセパレータとして読む。そのため、改行その他と区別できない。
1行ずつ読み込むには getline(file, string) を使う。
ただし、最後に改行文字は入らないので、もし必要であれば自分で書き込む必要がある。
fstreamは空白をセパレータとして読む。そのため、改行その他と区別できない。
1行ずつ読み込むには getline(file, string) を使う。
ただし、最後に改行文字は入らないので、もし必要であれば自分で書き込む必要がある。
gdbでC++のSTLの中身が表示されない
gdbではコンパイル時に -g オプションをつけておくと、デバッガ実行時に p(print) コマンドで実行時の各変数内容などが見れる。
しかし、例えば
しかし、例えば
vector<int> test;
test.push_back(3);
とかしてあっても、
p test[0]
はエラーとなる。これはインライン展開されているからでありそのインラインの中身がわからないかららしい。vectorにおいて、中身を見る際には
p test._M_impl._M_start[0]
とかする必要がある。
ファイル入力テンプレート
C++のfstreamを用いてテキストファイルを読み込む方法。
よく使うので書いておく。コンフィグファイルとか。
よく使うので書いておく。コンフィグファイルとか。
ifstream fin(filename);
if(!fin){
cerr << "Cannot open" << endl;
return -1;
}
while(!fin.eof()){
fin >> ........
}
fin.close();