• 締切済み

文字列検索:C++

 こんにちは。私は今月よりC++を勉強し始めたものです。  質問なのですが『ファイルから文字列を検索し、ファイル内の対象文字列がある行数と総検出数を返す』というプログラムはどう組めばいいのでしょうか?  よろしくお願いいたします。

みんなの回答

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.4

>strcmpをここで(私の質問内容で)使うのはどうしてなのでしょうか? よく読んでください。 strcmpを「作る」話です。「使う」ではありません。

mikui
質問者

補足

 すみません。作り方でしたらわかりません。お手数ですが教えてはいただけないでしょうか?  あと検索文字列がある行数だけを画面に出力するにはどうしたらいいのでしょうか?  

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.3

>2.やり方がわかりません。 > これはどのようにすればいいんでしょうか。 strcmpの作り方はわかりますか? わかるなら、それを応用するだけ。

mikui
質問者

補足

>strcmpの作り方はわかりますか? サイトに掲載されている基本的な用法までなら。応用になると難しいです。   文字列からの文字列の検索にはstrstr(こちらも応用となると難しい)がよく使われていますが、strcmpをここで(私の質問内容で)使うのはどうしてなのでしょうか?  

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

#C++は畑違いなんで回答は微妙ですが。 stringクラスのメンバ関数find()で文字列検索を行えそうです。 どう使うのかはヘルプ等を参照。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

行をまたぐ文字列は検索しない、という前提で。 1.ファイルから1行読む 2.読んだ行の中で文字列を検索し、必要に応じて行数・総検出数をカウントする 3.ファイルの終わりまで1に戻って繰り返し これを実現しましょう。

mikui
質問者

補足

回答ありがとうございます。  私のプログラムはこのような形です。 #include <fstream> #include <string> #include <iostream> using namespace std; int main( ) { int i; char s1[30]; char s2[40]; i=0; cout << "in: "; cin >> s1 ; ifstream ifs(s1);   string buf; while(ifs && getline(ifs, buf)) { i++; cout << i << endl; } return 0; } 結果として読み込んだファイルの中にある文字列の行数を出してはくれるのですが、2.やり方がわかりません。  これはどのようにすればいいんでしょうか。

関連するQ&A

専門家に質問してみよう