gpt4 book ai didi

c++ - 计算字符串中的字符

转载 作者:行者123 更新时间:2023-11-28 03:05:00 25 4
gpt4 key购买 nike

我的代码第一次运行并运行良好,但我遇到了循环问题:

  1. 我的代码不计算单词中的字符

  2. 第二次,当您按"is"时,它最终会打印出所有内容。我一定是在错误的位置有一个循环,但我怎么也找不到它。

#include <string> 
#include <fstream>
#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;
int main()
{
char character;
string sentence;
char answer;
int cCount;
while(1) {

cout << "Enter a character to count the number of times it is in a sentence: ";
cin >> character;
cout << "Enter a sentence and to search for a specified character: ";
cin >> sentence;
if(character == '\n' || sentence.empty())
{
cout << "Please enter a valid answer:\n";
break;

}
else {
cCount = count(sentence.begin(), sentence.end(), character);
cout << "Your sentence had" << " " << cCount << " " << character << " " << "character(s)" << '\n';
}

cout << "Do you wish to enter another sentence (y/n)?: \n";
cin >> answer;
if (answer == 'n'){
break;
}
}
return 0;
}

最佳答案

通过阅读您的代码,它看起来不错,除了您得到句子的地方。使用 cin,它只会读取直到看到换行符或空格,因此如果您输入一个句子,它会将每个单词读取为不同的输入。

尝试 getline(cin, sentence) 看看是否能解决问题。

编辑:忘记添加:在 getline 之后使用 cin.ignore()。 cin 读取并包含换行符(或空格),而 getline 仅读取换行符,因此换行符仍在缓冲区中。

关于c++ - 计算字符串中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19946879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com