C++ 在每个点C+之后插入新行+;
我有这个代码,我想用insert语句在每个点后面插入一个新行。我收到一条错误消息,调用“插入”时没有匹配的成员函数。我做错了什么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
#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');