CPP_file_tokenize の変更点 - アールメカブ

アールメカブ


CPP_file_tokenize の変更点


[[Programming]]

fstream は入出力両方を扱う
/home/ishida/research/program/cpp/corpus/FileTokenizer.cpp

 #include <iostream>
 #include <fstream>
 #include <string>
 using namespace std;
 
 int main(int arg, char *argv[]){
  string finame, foname;
  //  string ss;// strtok を使う場合は,
  // 読み込んだ行はchar 変数におさめる
  char ss[256];
  ifstream fin;
  ofstream fout;
 
  finame = argv[1];
  foname = argv[2];
 
  fin.open(finame.c_str());
  if(!fin) return 1;
  fout.open(foname.c_str());
  if(!fout) return 1;
 
  char seps[] = " !$\"%^&*()_+=#{}[]:;'`/?,.\t\n\u00a3"; 
  char crlf[] = "\r\n"; 
  char *token; 
 
  while(fin >> ss){
    //  while(fin.getline(ss,256)){// この場合,ss は char*型であるべき
    //  while(getline(fin,ss)){// この場合,ss は char*型であるべき
    token = strtok((char *)(const char *)ss, seps); 
    while( token != NULL ) 
      { 
	//"string" にトークンがなくなるまで繰り返します 
	char *m_token = token; 
	//リストへ表示し 
	fout << m_token << endl;
	// 次のトークンを取得します。 
	token = strtok( NULL, seps ); 
      } 
    //    fout << ss << endl;
  }
  fin.close();
  fout.close();
 }