在每个点之后插入新行,c++
Insert a new line after each dot, C++
我有这个代码,我想用插入语句在每个点之后插入一个新行。我得到错误消息,没有匹配的成员函数调用'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;
}
假设inText10只是inText8,这是工作代码。
更改完成:
- 先前,没有找到inText10字符串。因此,对该对象的insert()可能会产生错误。
- 插入换行的位置是NOT 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; }
在你的代码中有很多未定义的变量,但基本上你收到'没有匹配的成员函数调用'insert ",因为你试图插入std::endl到一个字符串。Std::endl不能被强制转换为任何类型的char,所以,你不能这样做。
要解决您的问题,请替换
inText10.insert(dotpos, endl);
inText10.insert(dotpos, 'n');
顺便说一下,如果你想在每个点后面插入n,你应该在循环中做find(),因为find()返回一个匹配的字符位置,而不是一个数组。
要了解更多,为什么不能插入std::endl,请阅读cppreference
相关文章:
- 使用新行和不使用新行读取文件
- 遇到新行时,有没有办法停止istream_iterator
- PangoLayout 中忽略的新行
- 使用 clang 格式时,当行很大时,如何将右括号分成新行?
- 如何检测将文本文件读入 int 数组的新行
- 当 getline 直到新行才读取时会发生什么?
- 添加新行时工作代码引发异常.调试技巧?
- QTree查看新行,没有布局就不可见已更改
- 新行上的 clang 格式右括号
- C++流:保存到新行而不是覆盖旧行
- (C++) 使用诅咒打印从文件中读入的新行
- 按升序输出整数时,将最后一个整数放在新行上
- 用C++计算输入文本的新行数
- 为什么我的代码在终端中没有输出任何内容.开始新行没有错误
- WriteConsoleOutputCharacterW - 我的新行在哪里?
- 为什么当测试用例数为 1 时,我的程序不输入而是打印新行?
- 如何运行 while 循环直到到达新行?
- 从文本文件读取时,如何知道是否已到达新行?
- 句子转换器在存在新行的情况下不起作用
- 如何控制 clang 格式新行中 lessless 的对齐方式