c++ - 在循环中使用 cin.get() 输入字符串

标签 c++

我想知道是否有一种方法可以在循环中使用 cin.get() 函数来读取可能由多个单词组成的字符串。

例如

while (cin.get(chr)) // This gets stuck asking the user for input

while (cin.get(chr) && chr != '\n') // This code doesn't allow the '\n' to be read inside the loop

我希望能够读取整个字符串并能够使用我的 chr 变量来确定正在读取的当前字符是否为“\n”字符。

我对 getline 函数有点熟悉。但是我不知道有什么方法可以在使用 getline 时单独遍历字符串中的每个字符,同时对它们进行计数。我希望我说的是有道理的。我是编程和 C++ 的新手。

我基本上想确定这些字符(' '、'\n')何时出现在我的字符串中。我将使用它来确定字符串中一个单词何时结束以及一个新单词何时开始。

最佳答案

如果你想阅读整行并计算其中的空格,你可以使用 getline .

std::string s;
std::getline(std::cin, s);

//count number of spaces
auto spaces = std::count_if(s.begin(), s.end(), [](char c) {return std::isspace(c);});

std::getline 将始终读取,直到遇到 \n

关于c++ - 在循环中使用 cin.get() 输入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58382274/

相关文章:

c++ - 结合 C++ 和 C - #ifdef __cplusplus 如何工作?

c++ - 我的 try catch 零除法有问题吗?

c++ - 如何为自定义链表容器编写 end() ?

c++ - 运算符重载的基本规则和惯用法是什么?

c++ - 关于指针指针的混淆

c++ - 递归算法的代码逻辑错误

c++ - 内存中是否有地址为 NULL(0) 的物理部分?

c++: volatile 实例中的 volatile 成员函数-将数组分配给指针是无效转换吗?

c++ - 文件无法正确读取 C++ ifstream

C++分离线程错误