我的字符串::find()在这里做什么



我有以下代码(简化):

std::string file = "TestName.raw.craw";
int index1 = file.find_last_of(".craw");
int index2 = file.find_last_of(".raw");

为什么在此之后索引 1 == 索引 2?(均为16)

是出于某种原因跳过了 . 还是其他原因?我在 http://msdn.microsoft.com/en-us/library/h21280bw.aspx 检查了一下,重点不在需要转义的字符列表中,那么这里发生了什么?

find_last_of()查找其参数中出现的任何字符的最后一次出现。在这里,这是两种情况下的最终w

应使用 rfind() 查找任何字符串中子字符串的最后一次出现。

std::string::find_last_of找不到

子字符串的最后一个实例,但会查找与输入字符串中的某个字符匹配的最后一个字符。 所以在这种情况下,他们俩都找到了w,并将索引返回到那个。

你想要的是std::string::rfind

find_last_of

字符串中搜索与其参数(函数中的第二个参数)中指定的任何字符匹配的最后一个字符

在您的情况下,它正在打印字符索引w即 16

请参阅此处以获取更多信息。

从字符串"TestName.raw.craw"中,两个find_last_of都在同一位置找到最后一次出现

相关内容

最新更新