C++ 在每个点C+之后插入新行+;

C++ 在每个点C+之后插入新行+;,c++,C++,我有这个代码,我想用insert语句在每个点后面插入一个新行。我收到一条错误消息,调用“插入”时没有匹配的成员函数。我做错了什么 #include<iostream> #include<string> using namespace std; int main () { string const inText1 = "I'm reading. "; string const inText2 = "I like to read. "; str

我有这个代码,我想用insert语句在每个点后面插入一个新行。我收到一条错误消息,调用“插入”时没有匹配的成员函数。我做错了什么

#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;
}
#包括
#包括
使用名称空间std;
int main()
{ 
string const inText1=“我正在阅读。”;
string const inText2=“我喜欢阅读。”;
string const inText3=“我要读那本书。”;
string const inText4=“她正在读书。”;
string const inText5=“他正在读书。”;
string const inText6=“已读。”;
string const inText7=“正在读取。”;
字符串inText8=inText1+inText2+inText3+inText4+inText5+inText6+inText7;
字符串::size\u type dotpos=inText10.find(“.”);
if(dotpos!=字符串::npos)
inText10.插入(dotpos,endl);

cout假设inText10只是inText8,这就是工作代码

所做的更改:

  • 之前,找不到inText10字符串。因此,该对象上的insert()可能产生了错误
  • 插入换行符的位置为dotpos。其dotpos+1
  • 注意:这段代码只在找到第一个点后添加一个换行符。要在每个点后添加换行符,请使用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;
    }
    
    #包括
    #包括
    使用名称空间std;
    int main()
    { 
    string const inText1=“我正在阅读。”;
    string const inText2=“我喜欢阅读。”;
    string const inText3=“我要读那本书。”;
    string const inText4=“她正在读书。”;
    string const inText5=“他正在读书。”;
    string const inText6=“已读。”;
    string const inText7=“正在读取。”;
    字符串inText8=inText1+inText2+inText3+inText4+inText5+inText6+inText7;
    字符串::size\u type dotpos=inText8.find(“.”);
    if(dotpos!=字符串::npos)
    inText8.插入(dotpos+1,“\n”);
    
    您的代码中有很多未定义的变量,但基本上您收到“没有匹配的成员函数来调用”insert“”,因为您试图将std::endl插入字符串中。std::endl不能转换为任何类型的字符,因此,您无法执行此操作

    要解决您的问题,请替换

    inText10.insert(dotpos, endl); 
    

    顺便说一下,如果要在每个点之后插入\n,应该在循环中执行find(),因为find()返回单个匹配的字符位置,而不是数组


    要了解更多信息,为什么不能插入std::endl,请阅读此

    什么是
    inText10
    ?代码中没有定义它
    inText10.insert(dotpos, '\n');