在 for 循环中使用 erase() 仅擦除第一行
Using erase() in a for loop only erasing first line
我正在尝试在for
循环中使用std::string::erase()
一次从字符串中删除一行,但它只删除第一行。
为什么只删除第一行?
Using namespace std;
String = "AdamnBennCallumnDennisn"
for(i=0; i<3; i++){
size_t endofstring = string.find("n");
string.erase(0,endofstring);
}
发生这种情况是因为erase()
的第二个参数是长度,而您正在传递索引,因此它会删除所有内容,但不包括n
。
根据您的期望,您似乎也想删除n
,因此请使用index+1
:
string.erase(0, endofstring+1)
有关更多参考,请参阅 http://www.cplusplus.com/reference/string/string/erase/
相关文章:
- 引用一个已擦除类型(void*)的指针
- 擦除while循环中迭代的元素
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- C++擦除(如果存在)
- 在映射擦除c++期间执行循环的次数
- 为什么擦除方法会影响结束方法
- C++ 字符串类擦除成员函数的时空复杂性
- 类型擦除的std::function与虚拟函数调用的开销
- C++14 中unordered_map矢量和擦除删除成语的奇怪行为
- C++ 擦除函数中需要澄清
- 循环挂起迭代的 std::擦除 on std::list
- 擦除许多矢量元素,同时使用'auto'
- 如何擦除冗余输入?
- C++ STL 设置按值擦除
- 如何在C++中允许成员函数的自定义返回类型进行类型擦除?
- 为什么我的向量::擦除调用会抛出"vector subscript out of range"?
- 如何在写入文件时擦除最后一个逗号
- C++:std::ofstream 方法 open() 在第二次迭代时擦除打开的 ifstream 文件
- 在 for 循环中使用 erase() 仅擦除第一行
- 关于使用 c++ 代码将数据从一行移动到下一行以擦除第一行数据