确定C+中字符串中每个单词的字母数量+; 我对C++和编码都是新的,在我的一个作业中遇到了一个问题。我只是在寻找一些输入,希望能解释一下为什么我的代码不起作用

确定C+中字符串中每个单词的字母数量+; 我对C++和编码都是新的,在我的一个作业中遇到了一个问题。我只是在寻找一些输入,希望能解释一下为什么我的代码不起作用,c++,algorithm,c++17,cin,C++,Algorithm,C++17,Cin,我试图从用户那里获取输入,并使用cin.get()函数来计算该字符串中的所有字符。我这样做是因为我想确定字符串中每个单词的字母。现在我的问题是我无法让它正确打印结果 我的问题是:当我试图确定我的变量chr是否为'\n'字符时,为什么不能得到结果chr是保存当前字符值的变量,当前字符值由cin读取。get()函数)是'\n'。 当chr的当前值为'\n'或字符串末尾时,我希望能够更新函数countWordsByLegth()的参数(word1、word2…) #include <iostre

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

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

#include <iostream>
#include <string>

int main()
{
  std::string s;
  s = "test";
  std::cout << "The string has " << s.length() << " letters!";
}
例如,以下代码将不会运行,这是我知道如何为不包含空格的字符串(一个单词字符串)更新参数的唯一方法:

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

while(cin.get(chr)&&chr!='\n')
{
计数器++;
if(isWhitespace(chr))
{   
--计数器;
//测试=真;
}
如果(计数器==5&&chr=='\n')
{
++字5;
计数器=0;
}
如果(计数器==4&&chr=='\n')
{
++字4;
计数器=0;
}
如果(计数器==3&&chr=='\n')
{
++字3;
计数器=0;
}
如果(计数器==2&&chr=='\n')
{
++字2;
计数器=0;
}
如果(计数器==1&&chr=='\n')
{
++字1;
计数器=0;
}

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

#include <iostream>
#include <string>

int main()
{
  std::string s;
  s = "test";
  std::cout << "The string has " << s.length() << " letters!";
}
#包括
#包括
int main()
{
std::字符串s;
s=“测试”;

std::请在问题中添加测试字符串,生成了什么结果以及您期望得到什么结果。您的
while
测试if
chr!='\n'
。因此,您永远不会碰到任何
if
语句,因为它们正在查找
\n
似乎可以使用循环而不是所有if语句。@churill:Y你可能是指数组或map。如何:<代码> STD::String S;STD::CIN > s;STD::CUT HI,我认为,不是指向C++ DOC,而是应该将实际的“返回字符串大小的函数”包含在你的答案中。这样,你就可以精确地回答只有单字节编码正确的问题。::string
可以很好地包含utf-8编码的字符串,这在Linux上是正常的。@MaximeGroushkin:unicode的长度是“不明确”的。请看@Jarod42一个字符串或单词占用多少字节与一个字符串包含多少个单独的字符是完全不同的问题。这回答了前一个问题。
#include <iostream>
#include <string>

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