【发布时间】:2014-12-20 18:55:17
【问题描述】:
我正在尝试让我的程序一次读取一个单词,直到检测到“完成”一词。但是,我似乎无法正确使用语法,首先如您所见,我使用了读取整行的 getline 函数。但这不是我理想中想要的,所以我决定尝试使用 cin.get 因为我知道它只会读取输入,直到遇到空格或 \n。可悲的是,一次遍历后失败,使我能够输入任何内容...以下是我的源代码。
我的源代码:
#include <iostream>
#include <cstring>
int main()
{
char ch[256];
std::cout << "Enter words\n";
std::cin.get(ch, 256);
while(strcmp(ch, "done")!=0)
{
std::cin.getline(ch, 256); // this reads the entire input, not what I want
// std::cin.get(ch, 256); this line doesn't work, fails after one traversal
}
return 0;
}
示例运行:
用户输入:你好,我的名字完成了
然后我的程序会一次将每个单词读入 char 数组,然后我在 while 循环中的测试条件检查它是否有效。
到目前为止,这不起作用,因为我正在使用 getline,它读取整个字符串,并且只有在我自己键入字符串“done”时它才会停止..
【问题讨论】:
-
为什么不使用 std::string 而不是 char 数组?然后做
cin >> word -
如果你要使用 C++,那就用它吧。'
-
我的教科书 C++ Primer Plus 说我必须使用 char 数组..
-
那是一本糟糕的教科书。
-
@AlanStokes 也许这是一个了解正在发生什么的练习?
标签: c++