2010-12-03 19 views
20

C# içinde konsolun bir karakterin girilmesini beklemesine neden olabilirsiniz (bu, program çıkmadan önce bir konsolun son çıkışlarını görebilmek için kullanışlıdır). C++ 'da bir başlangıç ​​olarak, eşdeğerin ne olduğundan emin değilim. Biri var mıKonsolu C++ içinde duraklatmak mı?

+0

Windows veya Linux? –

+2

Yinelenen: http://stackoverflow.com/questions/1173208/what-is-the-best-practice-for-combating-the-console-closing-issue –

+0

@Stefan: pencereler. – RCIX

cevap

3

standardında hiçbir şey ve hiçbir şey çapraz platform bulunmaktadır. Normal yöntem < Girilmesi için Enter tuşuna basmak, ardından sonucu atmaktır.

+0

C++ standart kütüphanesi ANSI/C++ ISO Dil standardına dahil edilmiştir ve 'stream :: sinream 'dizisini içerir. Bu platformlar arası ve "hiçbir şey" değil. – Abel

+0

@Abel: Çizgi arabelleği. –

29

basit yolu basitçe:

std::cin.get(); 

Sen gibi bir şey yazdırabilirsiniz bundan önce "Devam etmek için herhangi bir tuşa ... basın". Bazı insanlar size bunun hakkında bilgi vermeyecektir. Taşınabilir değil.

+8

'cin.get()' in tek bir karakter okuması beklenirken, terminalinizin satır ara belleğe alması muhtemeldir, bu nedenle 'get()' döndürmesi çağrısından önce enter tuşuna basmanız gerekecektir. –

5
#include <stdio.h> 
// ... 
getchar(); 

Bu işlev, tek bir tuşa basmayı bekler ve (tamsayı) değerini döndürür.

Örneğin, ama (btw potansiyel bir güvenlik bütündür) olup "pause.exe" gerektirmeden System("pause") aynı yapar bir işlevi vardır:

void pause() 
{ 
    std::cout << std::endl << "Press any key to continue..."; 
    getchar(); 
} 
+5

'pause.exe' yoktur; 'pause' kendisi Windows kabuğunda yerleşik bir komuttur. –

+2

Eh, ben komut duraklama temelde program "duraklama" olan bir süreç yürütme sonuçlandı izlenim altındaydı. Örneğin, sistem ("notepad") '(pencereler üzerinde) notepad'i başlatır, bu nedenle bu komut kesinlikle * diğer çalıştırılabilirleri çalıştırabilir. – Mephane

0

yanlış bir çözüm olurdu Bu güvenlik delikleri (dizinde zararlı pause.exe!) oluşturur ve çapraz platform değil (sadece Windows/DOS üzerinde duraklatmak) system("pause") kullanmak için.

void myPause() { 
    printf("Press any key to continue . . ."); 
    getchar(); 
} 

Bu getchar() kullanır, uyumlu POSIX (this bakınız):

daha basit bir çözüm yoktur. Böyle bu işlevi kullanabilirsiniz:

int main() { 
    ... 
    myPause(); 
} 

Bu etkin yanıp sönen ve daha sonra çıkmasını konsolu engeller.

İlgili konular