【发布时间】:2017-04-22 00:48:45
【问题描述】:
我要做的是让用户以他们喜欢的格式输入电话号码,然后使用循环将字符串中的每个字符与另一个字符进行比较来删除用户在输入中使用的辅助字符一组已定义的辅助字符,如果匹配,它会从字符串中删除该字符。我这样做是作为一个练习问题来发展我对迭代器的理解。我已经用微不足道的 for 循环成功地做到了这一点。但是,当我尝试以这种方式执行此操作时,每当有两个辅助字符(如“(+”)时,循环不会为下一个字符运行,在这种情况下是“+”。它直接跳到“9 " 并且在那之后工作正常。如果字符串中稍后出现其他帮助字符,它会执行相同的行为。我通过在第一个 for 循环下方放置一个 cout
#include <iostream>
#include <string>
using namespace std;
int main()
{
string main = "(+91)892-333";
string dictionary = "(+)-";
for( string::iterator i = main.begin(); i != main.end(); i++)
{
for( char word : dictionary)
{
if(*i == word)
{
main.erase(i);
break;
}
}
}
cout << main;
}
【问题讨论】:
标签: string loops c++11 iterator char