我很困惑,从用户获取角色

时间:2015-11-24 18:47:46

标签: c++ getchar getch

我有两个问题:

问题1 =我在互联网上搜索,我发现每个人都告诉他们不要在c ++中使用getch()getche()。那我怎么能从用户那里得到一个角色?例如,我写了这段代码,所以如何用另一个语句替换getch?

问题2 =我在visual studio 2013中编写了这段代码并且它工作正常但是当我在代码块中编写并编译whit GNU GCC编译器时,getchar()语句不起作用。为什么??

#include <iostream>
#include "conio.h"
using namespace std;

int main()
{
int word_counter=0,char_counter=0;
char ch;
cout<<"Enter your paragraph and press ENTER for end :\n";
cin>>ch;
while((ch=getchar())!=13)
    char_counter++;
cout<<"Number of characters ="<<char_counter<<endl;
return 0;
}

3 个答案:

答案 0 :(得分:1)

第一个问题: 使用cin通过控制台获取用户的输入。

第二个问题: GNU gcc编译器不支持getchar(),因为conio不是gcc的一部分。

修改

如前所述,请使用getline()而不是cin,因为只有在输入为'\n'时才希望循环中断。

答案 1 :(得分:0)

响应1:getch()用于从用户(或文件)中仅询问(读取)一个字符。

回复2:我想你要计算char的数量。

int main() 
{
char c;
long long  n;
do
{
    cin.get(c);
    cout<<c;
    n++;
}while(c!='.'); 
cout<<n<<endl;

return  0;
}

答案 2 :(得分:0)

  

问题1 =我在互联网上搜索,我发现每个人都告诉不要在c ++中使用getch()或getche()。那我怎么能从用户那里得到一个角色?

大多数环境会在文本到达您的程序之前对其进行缓冲。您必须输入文本,然后按Enter键才能将缓冲区传输到您的程序。

标准C ++中没有函数或工具可以在用户输入字符时从中获取字符。

当用户输入字符时,您需要使用特定于操作系统的功能来获取字符。您可能还想在互联网上搜索“按键”一词。

  

问题2 =我在visual studio 2013中编写了这段代码并且它工作正常但是当我在代码块中编写并编译whit GNU GCC编译器时,getchar()语句不起作用。为什么?

正如其他人所说,conio.h文件不是标准的。

根据this reference on getchar,您需要为此功能添加stdio

另请注意,C语言流(例如stdinprintf)可能与coutcin等C ++语言流不兼容。他们可能有不同的缓冲区。选择一个或另一个不要越过溪流。