//============================================================================ // Name : del-hash.cpp // Author : TK // Version : // Copyright : All rights reserved. // Description : Hello World in C++, Ansi-style //============================================================================ //g++ del-hash.cpp -o del-hash #include #include #include #include #include using namespace std; int del_hash(istream &input) { int cnt = 0; string line; //文字列の解析 while( getline(input, line) != 0 ) { stringstream data(line.c_str()); if(data.peek() == '#'){continue;}//1文字目が#はコメントとして扱い出力しない //データの出力 cout << data.str() << endl; cnt++; } return cnt; } int main(int aArgc, char **aArgv) { string inFileName; //オプション解析 int opt; while((opt = getopt(aArgc, aArgv, "i:l:h")) != -1) { switch(opt) { case 'i' : {inFileName = optarg;}break; case 'h' : { cout << aArgv[0] << " : help" << endl << aArgv[0] << " inFile" << endl << "\t-i INFILE : set input file to INFILE" << endl << "\t-h : help" << endl << endl; return 0; }break; default : {}break; } } //オプションが無かったときの処理 for(int i = optind; i < aArgc; i++) { if(inFileName.empty()){ inFileName = aArgv[i]; } else {cerr << "WARNING: '" << aArgv << "'is NOT option of this program." << endl;}break; } //入力ファイルが存在するとき ifstream inFile; if(!inFileName.empty()) { //インプットファイルのオープン inFile.open(inFileName.c_str()); if(!inFile.is_open()){cerr << "ERROR : cannot open file '" << inFileName << "'." << endl; return 0;} } //実行 del_hash(( !inFileName.empty() ? inFile : cin)); return 0; }