c++ - 在 for 循环中使用 erase() 仅擦除第一行
问题描述
我试图std::string::erase()
在for
循环中使用从字符串中一次删除一行,但是它只删除第一行。
为什么只删除第一行?
Using namespace std;
String = "Adam\nBen\nCallum\nDennis\n"
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/
推荐阅读
- python - 如何使用 Waitress 和 Nginx 服务本地应用程序
- jquery - 从超链接图像中删除外部链接图标
- php - PHP转换字符
- jenkins - 如何在 Jenkins 管道中从 SonarQube 接收质量门状态?
- c++ - 为什么将小部件设置为中心时不显示场景
- android - Android runOnUiThread
- xmlhttprequest - 如何发送 Content-Disposition: form-data; 从 C# 调用 post api 时以正确的方式使用 name="name" 以避免 statuserror 500
- artifactory - Artifactory:在不分配管理员权限的情况下,允许创建 repo 需要什么权限集?
- pandas - Pandas - DataFrame aggregate behaving oddly
- bixby - Bixby:如何在输入视图中的日期选择器中将初始值设置为 self BirthdayInfo?