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

时间:2013-09-11 18:04:43

标签: c++ string

我有以下代码(简化):

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处查看了该点并不​​在需要转义的字符列表中,所以这里发生了什么?

4 个答案:

答案 0 :(得分:13)

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

您应该使用rfind()查找任何字符串中最后一个子字符串。

答案 1 :(得分:2)

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

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

请参阅THIS了解详情。

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

从字符串“TestName.raw.craw”中,find_last_of在同一个地方找到最后一次出现