2016-11-17 10 views
-2

私はこのコードを持っているので、各ドットの後ろに挿入文を挿入したい。私は '挿入'への呼び出しのための一致するメンバー関数がないというエラーメッセージを受け取ります。私は間違って何をしていますか?各ドットの後に新しい行を挿入するC++

#include<iostream> 
#include<string> 


using namespace std; 

int main() 
{ 
    string const inText1 = "I'm reading. "; 
    string const inText2 = "I like to read. "; 
    string const inText3 = "I'm gonna read that book. "; 
    string const inText4 = "She's reading. "; 
    string const inText5 = "He's reading. "; 
    string const inText6 = "READ. "; 
    string const inText7 = "Reading. "; 

    string inText8=inText1+inText2+inText3+inText4+inText5+inText6+inText7; 

    string::size_type dotpos = inText10.find("."); 
    if(dotpos != string::npos) 
     inText10.insert(dotpos, endl); 


    cout << inText10 << endl; 


    return 0; 
} 
+6

読みますか?あなたのコードでは定義されていません – UnholySheep

答えて

0

inText10がちょうどinText8であると仮定すると、これは動作コードです。行わ

変更点:以前

  1. 、inText10文字列が見つかりませんでした。そのため、そのオブジェクトのinsert()がエラーを引き起こしている可能性があります。
  2. 改行を挿入する位置はNOT dotposです。そのdotpos + 1
  3. このコードは、最初のドットを見つけた後に改行を追加するだけです。すべてのドットの後に改行を追加するには、whileループを使用してすべてのドットを見つけ、その隣に改行文字を挿入します。

    #include<iostream> 
    #include<string> 
    using namespace std; 
    
    int main() 
    { 
        string const inText1 = "I'm reading. "; 
        string const inText2 = "I like to read. "; 
        string const inText3 = "I'm gonna read that book. "; 
        string const inText4 = "She's reading. "; 
        string const inText5 = "He's reading. "; 
        string const inText6 = "READ. "; 
        string const inText7 = "Reading. "; 
    
        string inText8=inText1+inText2+inText3+inText4+inText5+inText6+inText7; 
    
        string::size_type dotpos = inText8.find("."); 
        if(dotpos != string::npos) 
        inText8.insert(dotpos + 1, "\n"); 
    
    
        cout << inText8 << endl; 
        return 0; 
    } 
    
0

あなたは文字列にはstd :: ENDLを挿入しようとしているので、そこにあなたのコード内の未定義の変数の多くがありますが、基本的には、インサート「『』への呼び出しに該当メンバ関数」を受信しません。 std :: endlはどの型のcharにもキャストできないため、これを行うことはできません。

、あなたの問題を解決しますが、ループの中で()\ nはひとつひとつのドットの後に、あなたは見つけるのですかすべき挿入したい場合は、ちなみに

inText10.insert(dotpos, endl); 

inText10.insert(dotpos, '\n'); 

を交換するにはfind()は配列ではなく、マッチした単一のchar位置を返します。

多くを学ぶために、なぜあなたがのstd :: ENDLを挿入することはできません、これは `inText10`何ですかstd::endl description at cppreference

関連する問題