【问题标题】:i get confused whit get character from user我对从用户那里获取角色感到困惑
【发布时间】:2015-11-24 18:47:45
【问题描述】:

我有 2 个问题:

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

问题 2= 我在 Visual Studio 2013 中编写了这段代码,它工作正常,但是当我在代码块中编写并编译 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;
}

【问题讨论】:

  • 实际上是什么“不起作用”。编辑您的问题并准确说明问题所在。请检查minimal reproducible example 如何改进您的问题。
  • 请对每个问题提出 一个 问题,否则它不符合预期的常见问题解答,例如 Stack Overflow 的格式。
  • conio.h 不受任何现代标准 C++ 编译器的支持,它只是一个古老的遗物。

标签: c++ getchar getch


【解决方案1】:

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

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

编辑

使用getline() 而不是我之前提到的 cin,因为您希望循环仅在输入为 '\n' 时才中断。

【讨论】:

  • 可能 OP 实际上应该使用getline()
  • 嗯...我没有意识到 ASCII 13 的意思是 \ngetline() 是这个时候要走的路。 @πάνταῥεῖ
【解决方案2】:

响应 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;
}

【讨论】:

  • 请使用正确的代码格式(代码块缩进四个空格)
  • 请不要使用标签!
【解决方案3】:

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

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

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

当用户键入字符时,您将需要使用特定于操作系统的函数来获取字符。您可能还想在互联网上搜索“keypress”这个词。

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

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

根据this reference on getchar,您需要为该功能包含stdio

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

【讨论】:

    猜你喜欢
    • 2010-12-26
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    相关资源
    最近更新 更多