我有这个代码,我想在每个点后面插入一个新行,带有一个insert语句。我收到错误消息没有匹配的成员函数来调用'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;
}
答案 0 :(得分:0)
假设inText10只是inText8,这就是工作代码。
完成的更改:
请注意,此代码只是在找到第一个点后添加换行符。要在每个点后添加换行符,请使用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;
}
答案 1 :(得分:0)
您的代码中有很多未定义的变量,但基本上您没有获得匹配的成员函数来调用&#39;插入&#39;&#39;因为您试图将std :: endl插入到字符串中。 std :: endl不能被转换为任何类型的char,因此,你不能这样做。
要解决您的问题,请替换
inText10.insert(dotpos, endl);
带
inText10.insert(dotpos, '\n');
顺便说一下,如果你想在每一个点之后插入\ n,你应该在循环中执行find(),因为find()返回一个匹配的char位置,而不是数组。
要了解更多信息,为什么您无法插入std :: endl,请阅读此std::endl description at cppreference