2016-07-11 14 views
0

私は、行末の文字 '\ n'と文字列を比較する方法を知りたかったのです。 私はgetl​​ine関数を使いたくないのです。行末の文字 ' n'と文字列を比較するにはどうすればよいですか?

私の目的は、行末の文字 '\ n'に達するたびに行の数を増やして、ファイルが単語を読み出すたびに行番号を出力するようにすることです。 「共通」ワード線4画面希望出力線4

おかげで、 である場合

例えば

「青」ワード線2画面である場合だろう出力線2 またはこれは私サイトを初めて使用する。

+0

私はわかりませんあなたが "文字を文字列と比較"することを意味します。 – immibis

+1

ファイル内の単語を見つけて、その単語がどの行にあるかを示すプログラムを作成しようとしていますか? – Olathe

+0

入力ストリームから読み込んだり、 'for(int i = 0; i

答えて

0

私が理解しているところから、以下の機能があなたが探している機能です。発生数を\nと数え、カウントを返します。あなたは、文字列の全体のベクトルを通過する必要がありますので 、と仮定して:あなたは出力に行が新しい行を見つけるたびの数を、それをリファクタリングすることができます

int count_new_lines(string s) { 
    int count = 0; 

    for (int i = 0; i < s.size(); i++) 
     if (s[i] == '\n') 
     { 
      count++; 
      //Output to file the number of the line 
     } 

    return count; 
} 

EDIT(以下のコメントを参照してください)あなたはそのベクトル内の文字列オブジェクトのすべての行番号をカウントする必要があること、これがあなたの持っているものです:

int count_new_lines(vector<string> stringVector) { 
    int count = 0; 
    for (int strings = 0; strings < stringVector.size(); strings++) 
    { 
     string s = stringVector[strings]; 
     for (int i = 0; i < s.size(); i++) 
      if (s[i] == '\n') 
      { 
      count++; 
      //Output to file the number of the line 
      } 
    } 
    return count; 
} 

これは、そのベクトル内のすべての文字列オブジェクトの総行数を返します。あなた。パフォーマンスやその他のメリットを高めるには、ベクターを参照やポインタとして渡すことを検討してください。しかし、これはもう少し高度なトピックです。今後の参考のために

- この機能は大幅に参照とポインタを使用しての代わりに、次の行のようにオブジェクトをコピーするの恩恵を受けるだろう:私たちができ、文字列内の文字の出現回数を確認するには

string s = stringVector[strings]; 
+0

Opps!申し訳ありませんが文字列型は実際にはベクトルでした。 – Stephan

+0

私はすでに自分のコードの一部を私の上で使っていて、うまくいきませんでした。私はそれがベクターのためだと思うタイプ – Stephan

+0

ええベクトルを通過すると少し違う話になるだろう。では、各文字列要素はstd :: vectorでどのように表現されますか?すなわち、各文字列は単語、行、段落またはファイルの内容全体であるか? –

0

使用

size_t count = std::count(str.begin(), str.end(), '\n'); 

#include <algorithm> 
#include <string> 
#include <iostream> 

int main() { 
    std::string str("hello\nworld\n"); 
    std::cout << std::count(str.begin(), str.end(), '\n'); 
} 

http://ideone.com/mxRpKd

は別の答えにコメントによると、あなたは、文字列のベクトル間で合計数を取得したい:

size_t vec_char_count(const std::vector<std::string>& vec, char c) { 
    size_t count = 0; 
    for (const auto& str : vec) { 
     count += std::count(str.begin(), str.end(), c); 
    } 
    return count; 
} 

デモ:http://ideone.com/DAkWRj

+0

ベクトルの文字列を変更したくないので 'for(const auto&str:vec)'を使用します。それ以外は、おそらく私が使うものです。 – Lehu

関連する問題