首页 > 解决方案 > 带有“find_first_of”函数的 C++ 字符串错误

问题描述

我想得到两个引号之间的单词,所以我使用 std::string::find_first_of 但 pos2 和 pos1 是相同的值,它会导致错误。

  std::string ss="<tag2 name = \"Name1\">";
  std::size_t pos1=ss.find_first_of("\"");
  std::size_t pos2=ss.find_first_of("\"",pos1);//i'am using pos1 as a base position to get pos2.
  std::cout<<pos1<<std::endl<<pos2;

标签: c++string

解决方案


要在位置 pos1 之后查找 " 的下一个出现,您可以使用ss.find_first_of('\"',pos1+1);

ss.find_last_of('\"',pos1);将从您找到的第一个引号开始查找引号,但向后/朝向字符串的开头。您可以使用它ss.find_last_of('\"');来查找整个字符串中最后一次出现的引号。

在您的示例中,ss.find_first_of('\"',pos1+1);并且ss.find_last_of('\"');会产生相同的结果,因为字符串包含两个引号,因此第二个引号也是最后一个引号。


推荐阅读