获取std :: string的最后一个元素

我想知道是否有缩写或更优雅的方式来获取string的最后一个字符,如:

char lastChar = myString.at( myString.length() - 1 ); 

myString.back()似乎不存在。 有没有相同的东西?

在C ++ 11中,您可以使用back成员函数:

 char ch = myStr.back(); 

在C ++ 03中,由于疏忽, std::string::back不可用,但是可以通过解引用从rbegin得到的reverse_iterator来解决这个问题:

 char ch = *myStr.rbegin(); 

希望这可以帮助!

您可能首先要检查string的长度,然后执行如下操作:

 if (!myStr.empty()) { char lastChar = *myStr.rbegin(); } 

你可以写一个back委托给普通容器的成员函数的函数模板和一个实现string缺lessfunction的普通函数:

 template <typename C> typename C::reference back(C& container) { return container.back(); } template <typename C> typename C::const_reference back(const C& container) { return container.back(); } char& back(std::string& str) { return *(str.end() - 1); } char back(const std::string& str) { return *(str.end() - 1); } 

那么你可以back(foo)而不用担心foo是一个string还是一个向量。

*(myString.end() - 1)也许? 这也不完全优雅。

python-esque myString.at(-1)会要求太多的已经膨胀的类。