c++ - 在 C++ 中确定字符串的每个单词中的字母数量

标签 c++ algorithm c++17 cin

我是 C++ 和一般编码的新手,在我的一项作业中遇到了一些问题。我只是在寻找一些输入,希望能解释为什么我的代码不起作用。

我正在尝试获取用户的输入并使用 cin.get() 函数来计算该字符串中的所有字符。我这样做是因为我想确定字符串中每个单词的字母。现在我的问题是无法正确打印结果。

我的问题是:为什么当我试图确定我的变量 chr 是否是一个 '\n' 字符时我得不到结果? chr 是保存由 cin.get() 函数读取的当前字符值的变量)是一个 '\n' . 当 chr 的当前值为 时,我希望能够更新函数 countWordsByLegth() 的参数(word1、word2.....)\n' 或换句话说,字符串的末尾。

例如,以下代码将不会运行,这是我知道如何为不包含空格的字符串(单字串)更新参数的唯一方法:

if (counter == 5 && chr == '\n')
{
    ++word5;
    counter =0;
}

这是我的代码供引用。函数 isWhitespace() 只是确定字符是否为以下之一 '\n' , '\r' , '\t'):

while (cin.get(chr) && chr != '\n')
{
    counter++;
    if (isWhitespace(chr))
        {   
            --counter;
            //test = true;
        }
                if (counter == 5 && chr == '\n')
                {
                    ++word5;
                    counter =0;
                }
                if (counter == 4 && chr =='\n')
                {
                    ++word4;
                    counter =0;
                }
                if (counter == 3 && chr =='\n')
                {
                    ++word3;
                    counter =0;
                }
                if (counter == 2 && chr == '\n')
                {
                    ++word2;
                    counter =0;
                }
                if (counter ==1 && chr == '\n')
                {
                    ++word1;
                    counter =0;
                }
        cout << counter << endl; // Test code {delete later}
}
cout << "This is the total of word5: " << word5 << endl;

最佳答案

您可以使用 std::string.length() 获取字符串中的字符数。 length() 函数返回字符串中的字符数。

#include <iostream>
#include <string>

int main()
{
  std::string s;
  s = "test";
  std::cout << "The string has " << s.length() << " letters!";
}

http://www.cplusplus.com/reference/string/string/在这里您可以阅读有关可以与字符串一起使用的不同功能的信息。

关于c++ - 在 C++ 中确定字符串的每个单词中的字母数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58372281/

相关文章:

c++ - 如何将 cin 用于数组

c++ - 打开目录错误?

python - 将产量分成小于 Python 阈值的部分

c++ - 结构化绑定(bind)的标识符是否按顺序初始化?

c++ - 将两个 char* 带入另一个 std::string 的字符串构造函数在 c++14 中有效,但在 c++17 中无效

c++ - 折叠表达式的评估顺序

c++ - 基于CLRS的合并排序C++上的算法简介(带反转计数)

c++ - 如何使用 DirectShow 和网络摄像头预览图像

JAVA 计算 3^n - 3*2^n + 3 的最优方法。

algorithm - 获取二叉树中给定值的根到节点的距离 : Algorithm correctness