获取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)
会要求太多的已经膨胀的类。