2016-07-05 53 views
0

我剛開始學習C++,我希望程序在顯示結果後保持打開狀態。所以我用getch();而C++則表明它應該有一個原型。這是什麼意思?以及如何解決這一>getch()顯示原型錯誤

+0

顯示確切的錯誤。 –

+0

你確定它是'C++'而不是'c'嗎? –

+0

是的,它是C++。 :) –

回答

1

就意味着下列條件之一:

  1. 你在DOS下編程,忘了包括CONIO.H(https://en.wikipedia.org/wiki/Conio.h)。可能你從舊教科書中複製了一個源文件,因爲conio.h是一個非常古老的概念。你用什麼來源學習?我推薦一個來自:The Definitive C++ Book Guide and List

  2. 你在Linux下編程,你忘了,包括curses.h(http://linux.die.net/man/3/getch

+0

你忘了Windows。 –

+1

@MichaelWalz我不認爲任何(自我尊重)Windows編譯器隨conio.h一起發貨。如果我沒有記錯的話,它是Borland的一箇舊Turbo C頭。 – fritzone

+0

conio.h仍然與我的Visual Studio 2013交付。 –

-1

如果您使用的是Windows然後getch是從Windows的功能只有<conio.h> library。您需要包含它(#include <conio.h>)。 只有在Windows上纔有可能。

另外,getch()已棄用。 改爲使用_getch()


如果你在GNU + Linux的,那麼getch距離<curses.h> library的功能。你需要包括它(#include <curses.h>)。

0

包括:

1)<conio.h>在Windows上。

2)<curses.h>在UNIX

0

看起來你只是想PAUSE在屏幕上的控制檯應用程序。使用此#include <stdio.h>並嘗試getchar();而不是getch();或只需system("pause");cin.ignore()將爲您完成這項工作。

此外,「不開始調試」用Ctrl-F5將讓你按任意鍵在程序結束繼續。這樣,只有按下某個鍵後,控制檯纔會在顯示屏上暫停。

+0

您沒有添加「C++」解決方案:'cin.ignore()'。 – 2016-07-05 13:41:27

+0

@MatthewRoh你在這裏:) –

+0

不錯! :)現在它匹配C++標籤。 – 2016-07-05 13:48:36

0

我的理解是客觀的:

我想要顯示的結果後

方案保持開放何樂而不爲呢典型的c++方式?

#include<iostream> 

int main(void) 
{ 
    int i; 
    char ch; 
std::cout<<"Enter any character : "; 
std::cin.get(ch); // For testing enter a string at this step say "String" 

/* The input to cin is line-buffered, so after reading 'S' to ch, 
* the remaining "tring" is still in the buffer. 
*/ 

std::cout<<"Entered character : "<<ch<<"\n"; 
while(std::cin.get()!='\n') 
;; 
/* cin.get() is an overloaded function in the istream class. 
* If no arguments are passed to 'get()' this function reads single next character 
* In essence, we wait for the cin.get() to clear the buffer that is 
* read all characters including '\n' 
*/ 

std::cout<<"Press any key to continue..\n"; 
std::cin.get(); 
/* Since we have already cleared the buffer using the loop 
* 'get()' expects us to enter a character this time 
*/ 

return 0; 
} 
+0

爲什麼不使用'cin.ignore()'? – 2016-07-05 13:57:38

+0

@MatthewRoh:呃,我之前沒有使用過這種方法。在閱讀其他答案的評論之後,我正在閱讀該手冊。稍後會更新。 – sjsam

+1

@MthetheRRoh:我的第一印象是在這裏使用cin.ignore()是一種奢侈。我可以用更容易理解的'while()'循環完成工作 – sjsam