我是一个 C++ 开发者,
我有一个字符串如下:
string str = "rake::may.chipola::ninbn::myFuntion";
如何获取上述字符串中的最后一个元素,该元素始终在“::”的最后一次出现之后?
我是一个 C++ 开发者,
我有一个字符串如下:
string str = "rake::may.chipola::ninbn::myFuntion";
使用std::string::rfind()
函数查找最后一次出现的::
,并使用std::string::substr()
函数提取该标记:
// Example without confirming that a '::' exists.
std::string last_element(str.substr(str.rfind("::") + 2));
rfind
可能会返回std::string::npos
,当加上+ 2
后可能会产生溢出。如果输入字符串为"rake"
,那么这个表达式的结果很可能是"ake"
。这真的很不幸。 - Matthieu M.::
是否存在。OP 应该 检查rfind()
的结果不是string::npos
,并且rfind() + 2 < str.length()
。 - hmjdrfind(":") + 1
,那么它就会起作用,因为std :: string :: npos + 1
是0
。 - Simon Kraemer