c++ - C++字符串程序错误

标签 c++ string loops

我制作的这个程序让用户输入一个字符串和一个字符,然后显示该字符在字符串中出现的次数。出于某种原因,每次我运行这个程序时,它总是说该字符在字符串中出现 0 次。我需要一些帮助来确定问题并解决问题。谢谢!

#include <cstdlib>
#include <iostream>
#include <string>
#include <cctype>

using namespace std;

int main(int argc, char *argv[])
{
    string input;
    char character;
    int charCount = 0;

    cout << "Enter a string:" << endl;
    getline(cin, input);
    cout << "Enter a character:" << endl;
    cin  >> character;
    int i = input.find(character);
    while (i < 0)
    {
          charCount++;
          i = input.find(character, (i + 1));  
    }
    cout << character << " appears in the string, " << input << ", " << charCount << " times." << endl;

    system("PAUSE");
    return EXIT_SUCCESS;
}

最佳答案

你的问题是循环条件

int i = input.find(character);  // if the character is in the string, it will return a number i > 0
while (i < 0) // will not enter loop
{
      charCount++;
      i = input.find(character, (i + 1));  
}

此外,根据此逻辑,charCount 将随着您在字符串中遇到的每个字符而增加。

关于c++ - C++字符串程序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35121179/

相关文章:

c++ - 获取字符串后对 CompStr(BSTR, BSTR) 的访问冲突?

c++ - OggVorbis ov_open() 抛出访问冲突异常

java - N位组之间的异或

javascript - 如果输入字符串与反转的输出字符串相同,则应显示反转的单词

R 有效地填充向量

c++ - 如何制作可复制的 boost::signal?

c++ - 为什么我们在 C++ 中没有 <cstdfloat>?

c - 将字符串解析为单个单词

python - 装饰器使用 for 循环但不使用 while 循环

c# - 使用循环的 ComboBox 项目