我有以下代码(简化):
std::string file = "TestName.raw.craw";
int index1 = file.find_last_of(".craw");
int index2 = file.find_last_of(".raw");
为什么index1 == index2之后呢? (都是16)
是的。因某种原因跳过了什么?我在http://msdn.microsoft.com/en-us/library/h21280bw.aspx处查看了该点并不在需要转义的字符列表中,所以这里发生了什么?答案 0 :(得分:13)
find_last_of()
查找其参数中出现的任何字符的最后一次出现。在这两种情况下,它都是最终w
。
您应该使用rfind()
查找任何字符串中最后一个子字符串。
答案 1 :(得分:2)
答案 2 :(得分:2)
std::string::find_last_of
找不到子字符串的最后一个实例,但查找与输入字符串中的一个字符匹配的最后一个字符。所以在这种情况下,他们都找到了w
,并将索引返回到那里。
你想要的是std::string::rfind
答案 3 :(得分:0)
从字符串“TestName.raw.craw”中,find_last_of在同一个地方找到最后一次出现