检查字符串是否重复特定字符

Check string for recurrence of specific character

本文关键字:字符 字符串 是否 检查      更新时间:2023-10-16

如何在字符串内部搜索特定字符的多次出现(在本例中为句点.(?

我已经试着从这个问题中得出答案,但我认为我做错了。

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 periodsn";
        return false;
    }
}

第一行简单地从Boost多精度cpp_dec_foat(名为i(转换为字符串。我知道这部分代码是有效的,因为我在程序的其他地方有效地使用了它。

我正在尝试检查字符串是否包含多个句点。如果字符串中有多个句点,函数将返回false

我怎样才能做到这一点?

如果您找到一个句点,那么您的下一个逻辑步骤也是再次搜索,从下一个字符位置开始。

但是,如果您查看代码,您将无法找到它实际再次搜索的任何位置。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;
}