C++ 擦除函数中需要澄清
Clarification needed in c++ erase function
所以在最近的编程竞赛中出现了这个问题。 我们在这个问题上有一个测试用例
8
11001101
现在我想要的输出是 1,但这行
cout << s.erase(0,6) << "n"
给出 01,即使我想删除从 0 到第 6 个索引位置的元素。 我应该如何删除从 0 到 6(包括 6(的元素
这是供参考的代码
#include <vector>
#include <iostream>
using namespace std;
int main(){
int t; cin >> t;
while(t--){
long n; cin >> n;
string s; cin >> s;
int index_l=0;
int index_r=0;
for(int i=0;i<n;i++){
if(s[i]=='1'){
index_l = i;
break;
}
}
for(int i=s.length(); i > index_l;i--){
if(s[i] == '0'){
index_r = i;
break;
}
}/*
cout << s.length() << "n";
cout << index_l << " " << index_r << "n";
*/
if(index_r == 0) cout << s << "n";
else cout << s.replace(index_l,index_r,"0");
}
return 0;
}
查看一些文档以了解std::string::erase
。有一个重载需要起始索引和要删除的字符计数。如果要删除前7个字符,则应执行以下操作:
s.erase(0, 7)
需要明确的是,第二个参数不是位置。它是要删除的字符数。
相关文章:
- C++ 字符串类擦除成员函数的时空复杂性
- 类型擦除的std::function与虚拟函数调用的开销
- C++ 擦除函数中需要澄清
- 如何在C++中允许成员函数的自定义返回类型进行类型擦除?
- 双链表的擦除值函数,未知错误
- 调用 erase() 函数是否也会在擦除元素之前更改迭代器值?
- 有没有函数可以在擦除 c++ 中获取 deque.begin() 的 int 值?
- C++ 根据成员函数从矢量中擦除对象
- 键入擦除成员函数指针的"right"方法是什么?
- 无法使用"擦除"函数从 c++ 字符串中删除数字
- 标准库中是否有与 std::thread 的构造函数语义匹配的类型擦除函数包装器?
- 为序列容器重新制定擦除函数
- 如何实现哈希表的擦除函数
- C++ 中矢量中的擦除函数
- 矢量擦除函数不起作用 c++
- 向量类中擦除函数的正确实现是什么
- for 循环中的矢量擦除函数未正确擦除类的矢量
- 矢量擦除函数删除错误的对象
- 擦除函数调用错误
- 通用擦除函数