如何在字符串内部搜索特定字符的多次出现(在这种情况下为句点.
)?
我已经尝试调整this question的答案,但我认为我做错了。
std::string periodCheck = i.convert_to<std::string>();
char subString = '.';
std::size_t pos = periodCheck.find(subString, 0);
int counter;
while(pos != std::string::npos){
counter++;
if(counter > 1){
std::cout << "\nError: Multiple periods\n";
return false;
}
}
第一行只是从Boost多精度cpp_dec_float(名为i
)转换为字符串。我知道这部分代码可以工作,因为我在程序的其他地方有效地使用它。
我正在尝试检查字符串是否包含多个句点。如果字符串中包含多个句点,则函数返回false
。
我怎样才能做到这一点?
答案 0 :(得分:3)
如果你找到一个句号,那么你的下一个逻辑步骤也是再次搜索,从下一个字符位置开始。
但是,如果您查看代码,则无法找到实际再次搜索的位置。在while循环中没有调用find()
。
根本不需要while循环。您需要做的就是再次拨打find()
,指定pos+1
作为第二次搜索的起始位置,然后再次检查结果。如果你找到另一个时期,你可以称之为包裹。搜索字符串中的任何剩余句点不会获得任何结果。你有答案。
std::size_t pos = periodCheck.find(subString, 0);
if (pos != std::string::npos)
{
pos=periodCheck.find(subString, pos+1);
if (pos != std::string::npos)
return false;
}