c++ - 带有“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;
解决方案
要在位置 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('\"');
会产生相同的结果,因为字符串包含两个引号,因此第二个引号也是最后一个引号。
推荐阅读
- javascript - 用图像替换 JSON 字符串
- c++ - 从头文件调用字符串 getter 函数
- python - 在 Pandas 数据框中获取列的值,将数字添加到值并保存为新数据框
- html - 为什么我的网络图片库中的项目在 ios 上消失了?
- codeception - 如果测试失败,如何在代码接收中回滚数据库?
- assembly - 关于汇编语言设置标志的逻辑问题
- php - 具有多个 slug 的 Laravel 路由在 React 中不起作用
- python - 整理熊猫实验的结果
- python - 将具有一个键和两个值的字典写入 csv 文件
- c# - 在 OData API 中修改表达式树