2

我有以下代码(简化):

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

4 回答 4

13

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

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

于 2013-09-11T18:06:44.200 回答
2

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

在您的情况下,它正在打印字符wie16的索引

请参阅以获取更多信息。

于 2013-09-11T18:09:07.293 回答
2

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

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

于 2013-09-11T18:09:36.360 回答
0

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

于 2013-09-11T18:10:59.070 回答