读书人

关于string的疑问,该如何处理

发布时间: 2012-03-28 15:40:03 作者: rapoo

关于string的疑问
#include<iostream>
#include<string>
#include<cctype>
using namespace std;

int main()
{
string str;
cin>>str;

for(string::iterator iter = str.begin();iter != str.end();++iter)
{
if(isupper(*iter))
{
str.erase(iter);
--iter;
}
}

string::iterator iter1 = str.begin();
while(iter1 != str.end())
cout<<*iter1++;
cout<<endl;

return 0;
}

为什么我输入asdASD程序能正常运行,而如果第一个字母是大写的化,就不能运行,这是c++primer上的一道习题。

[解决办法]
if(isupper(*iter))
{
str.erase(iter);
--iter;
}
}

这段代码表示如果是大写就删除该字符
[解决办法]
iter 越界了
[解决办法]
我输入AsdASD 输出sd 你的不能运行指什么
[解决办法]
第一个为大写字母 进入

if(isupper(*iter))
{
str.erase(iter);//此时迭代器指向第一个元素
--iter;//再往前走就访问越界了
}


[解决办法]
你试试从后往前访问
应该好些
[解决办法]

探讨
第一个为大写字母 进入

if(isupper(*iter))
{
str.erase(iter);//此时迭代器指向第一个元素
--iter;//再往前走就访问越界了
}

读书人网 >C++

热点推荐