C++ 如何获取 string 对象的最后一个元素

来源:百度知道 编辑:UC知道 时间:2024/07/02 04:44:03
string ww("aasass");
int awe=0;
if(ww[ww.size()-1]=="s")
{
*lz=ww.erase(ww.end()+1);
cout<<"已删除 "<<*lz<<" 的's'结尾!"<<endl;
++awe;
}
----------------------------------------
如何可以获取string对象的末位啊?

ww[ww.size()-1] 这种经证实错误

(ww.end()+1);这种虽没错误,

但是经证实获取的并不是末位

(ww.end()-1);也不是末位

ww.back()也试过了,不知道是不是要什么特殊的头文件,

没过得了编译,出错了

到底要怎么做啊?

嗯,你主要是对那些函数的返回值不了解。
end返回的是最后元素的下一个位置,你写end() + 1,肯定是错的啊~~~
要想得到最后一个值,应该是:
ww.end() - 1

另外erase()返回的是删除元素的下一个元素,所以,你的lz其实现在是等于ww.end()了,输出当然不能是你想象中那样啊~~~

另外string的元素不是string,而应该是char.

不信,你试试下面的程序:

#include <string>
#include <iostream>

using namespace std;

int main()
{
string str("abcds");

int awe=0;
string::iterator lz;
if(str[str.size()-1] == 's')
{
lz =str.erase(str.end() - 1);
cout<<"ÒÑɾ³ý "<<*lz<<" µÄ's'½áβ!"<<endl;
++awe;
}
if ( lz == str.end() )
{
cout << str << endl;
}
system("pause");
}

中文显示不正常,不影响结果。

zf2187老兄,你那样做没意义,而且ww是string类,不是简单的char数组