入出力 stream系
<fstream> ファイルストリーム
ファイル入出力。開いたファイルは勝手に閉じる。
> ofstream fout( "hoge.txt" );
> fout << "testmessage" << 123 << std::endl;
オープンモードは,ファイルを開くときに一緒に指定する。
複数指定するときは | で結ぶ。
書き込み専用(標準) fout( "hoge.txt", std::ios::out )
改行せずに追記 fout( "hoge.txt", std::ios::app )
改行して追記 fout( "hoge.txt", std::ios::out | std::ios::app )
> ifstream fin( "hage.txt" );
> fin >> buf;
<sstream> 文字列ストリーム
文字列に入出力。str() で string に変換する。
> ostringstream os;
> os << "hoge" << 123 << endl;
> cout << os.str();
入力ストリームは以下のようにしてスプリットとかに使える。
> istringstream is( "10+20" );
> int n,m; char c;
> is >> n >> c >> m;
一行ずつ読み込み
STLの場合
#include <string>
#include <fstream>
#include <vector>
...
ifstream fin("filename", ios::in); // 読み込み専用
vector<string> lines;
string buf;
while( getline(fin, line) ){
lines.push_back(line);
}
fin.close();
Ctrl-Z (Win) Ctrl-D (Unix) で終了
char c;
while( cin.get(c) ){
cout.put(c);
}
シグナル
#include <signal.h>
...
void MySignalHandler( int sig ){
fprintf(stdout, "catch %d\n", sig);
exit(1);
}
...
int main() {
if (SIG_ERR == signal(SIGUSR1, MySignalHandler )) {
printf("failed to set signal.\n");
exit(1);
}
...
}
signal() の1つめの引数は,キャッチするシグナル。1つめは呼び出す関数。
シグナルの送り方 その1(シェルから)
> kill -USR1 <プロセスID>
シグナルの送り方 その2(プログラム内から)
raise( SIGUSR1 );
Cからシェルコマンドを実行
#include <stdlib.h>
...
system( " echo hoge " );
文字列の扱い
一文字ずつ入出力
cin.get( c ); // 改行も一文字として扱う。EOFは一度受け取ると出しつづける模様。
cout.put( c );
最終更新:2010年01月07日 11:03