入出力

入出力 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
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。