【问题标题】:Check string for recurrence of specific character检查字符串是否重复出现特定字符
【发布时间】:2017-02-23 07:42:33
【问题描述】:

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

我已经尝试修改来自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

我怎样才能做到这一点?

【问题讨论】:

    标签: c++ string search boost find


    【解决方案1】:

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

    但是,如果您查看您的代码,您将无法再次找到它实际搜索的任何地方。在 while 循环中没有对 find() 的调用。

    根本不需要while循环。您只需再次调用find(),指定pos+1 作为第二次搜索的起始位置,然后再次检查结果。如果您发现另一个时期,您可以称其为 wrap。通过搜索字符串中的任何剩余句点不会获得任何信息。你有你的答案。

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 2019-08-15
      • 1970-01-01
      • 2017-12-16
      • 2021-12-05
      • 2023-03-31
      • 1970-01-01
      • 2022-01-10
      • 2015-06-24
      • 1970-01-01
      相关资源
      最近更新 更多