在C++中暂停程序的不同方法

7,164 阅读4分钟

在这篇文章中,我们将了解在C++中暂停程序的不同方法。在这种方法或函数的帮助下,你将能够在执行过程中暂停任何C++程序。

当用户想要输入或读取一些重要数据时,程序就会被用来暂停。不同的暂停方法提供了一些时间,因此用户可以正确地阅读数据或指令,并选择下一个动作。换句话说,暂停()方法使软件更具可读性,更容易使用。

由于C++是最流行和最有用的编程语言,它提供了不同的方法和功能来暂停程序。

下面是一些用于暂停C++程序的方法或函数的列表:

  1. pause() 函数
  2. getc()函数
  3. getchar()函数

pause()函数

pause()函数是一个窗口方法,用于暂停当前执行的程序。这个方法是窗口专用的,除了Windows和DOS之外,在其他任何操作系统上都不能工作。
当暂停()操作被终止时,它继续执行剩余的程序。
暂停()方法暂停正在运行的程序的执行,直到用户按下回车键。

暂停方法如何工作?

当用户调用pause方法时,整个程序代码被暂停。然后,system()函数对操作系统进行了调用。它打开一个shell,在整个库中搜索暂停方法。然后分配资源并执行暂停()方法。然后等待用户输入,操作完成后释放内存。退出并继续执行剩余的程序。最后,显示数据。

语法

system("pause")

优点:

pause()方法很简单,容易理解()。

缺点 :

不能移植,
该方法在Linux和MacOS上不能使用,
需要进行系统调用并占用额外资源。

pause()方法可以用来暂停一个C++应用程序,如下面的示例代码所示。

程序代码

1.	//c++ program to pause program by pause() method
2.	#include <iostream>
3.	#include <cstdlib> 
4.	using namespace std;
5.	int main() 
6.	{
7.	for (int i=0; i<=10; i++) 
8.	{
9.	cout << "i = " << i << endl;
10.	if (i == 5) {
11.	// Call the pause command
12.	cout << "Program Is Paused\n";
13.	system("pause");
14.	cout << "pause program terminated\n";
15.	cout << "Resuming program \n";
16.	}
17.	}
18.	return 0;
19.	}

输出 :

i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
Program Is Paused
pause program terminated
Resuming program 
i = 6
i = 7
i = 8
i = 9
i = 10

解释

这里,当i值等于5时,暂停方法被调用。当用户按回车键终止程序时,恢复的程序被执行。

好吧,让我们再举一个例子,
在这个例子中,我们有一个有特定周期(毫秒)的暂停程序。

程序代码

1.	#include <ctime>
2.	#include <iostream>
3.	void pause(int dur);
4.	int main()
5.	{
6.	std::cout<<"Pausing for 5 second... \n";
7.	pause(5);
8.	std::cout<<". \n";
9.	std::cout<<". \n";
10.	std::cout<<". \n";
11.	std::cout<<". \n";
12.	std::cout<<". \n";
13.	std::cout<<"DONE\n";
14.	return 0;
15.	}
16.	void pause(int dur)
17.	{
18.	int temp = time(NULL) + dur;
19.	while(temp > time(NULL));
20.	}

输出

Program is pausing for 5 second.. 
.
.
.
.
.
.
DONE

解释

在这里,为了让程序暂停5秒,我们通过了暂停方法,时间长度为一毫秒。在这里,用户不需要按任何回车键来继续执行。

getchar()

getchar()方法和pause()方法一样,在暂停的C++程序中使用。
getchar()是C++中的一个内置函数,它相当于get(stdin)函数。getchar()方法从标准输入和输出中读取下一个字符。
当用户按下除 "ENTER "以外的任何键时,系统会被暂停。当他按下 "ENTER "时,它接受输入行的字符。
这个暂停不会结束。因此,建议用户在执行暂停操作之前,先阅读所有的数据。

语法:

int getchar(void)。

返回类型 :

这个函数没有任何参数,
它返回一个int值。

程序代码

1.  //c++ program to pause program using getchar() method.
2.	#include <iostream>
3.	#include <vector>
4.	#include <thread>
5.	#include <chrono>
6.	using std::cout; 
7.	using std::cin;
8.	using std::endl; 
9.	using std::vector;
10.	using std::copy;
11.	using std::this_thread::sleep_for;
12.	using namespace std::chrono_literals;
13.	//driver code
14.	int main()
15.	{
16.	int flag;
17.	cout << "your program is paused!\n";
18.	cout << "Press Enter to continue\n";
19.	flag = getchar();
20.	cout << "\nContinuing \n";
21.	//make sleep program 200ms 
22.	sleep_for(200ms);
23.	cout << "..........\n";   
24.	cout << "..........\n";
27.	//this will print after 200ms or sleep period complete
28.	cout << "\nProgram Completed!";
29.	return EXIT_SUCCESS;
30.	}

输出

your program is paused!
Press Enter to continue
Continuing 
..........
..........
Program Completed!

解释:

这里,我们通过getchar()方法来暂停程序。如果用户按下 "ENTER "键,它就会接受所输入行的字符。当睡眠期结束后,铰链程序开始执行。

getc()

getc()也用于暂停一个程序。这个函数存在于标准输入-输出库中。该函数属于C库,
该函数从流中读取下一个字符。

语法 :

getc(FILE *stream)

它是FILE对象的指针,确定了操作的流类型。该流包含三个标准文件流。

  1. stdin
  2. stdout
  3. stderr

其中stdin用于接收从用户键盘上获取的输入。
它使用户等待用户继续执行程序。

程序代码

1.	//c++ program to pause program using getc() method.
2.	#include <iostream>
3.	#include <vector>
4.	#include <thread>
5.	#include <chrono>
6.	using std::cout; 
7.	using std::cin;
8.	using std::endl; 
9.	using std::vector;
10.	using std::copy;
11.	using std::this_thread::sleep_for;
12.	using namespace std::chrono_literals;
13.	//driver code
14.	int main()
15.	{
16.	int flag;
17.	cout << "your program is paused !\n";
18.	cout << "Press Enter to continue\n";
19.	flag = getc(stdin);
20.	cout << "\nContinuing .";
21.	//make sleep program 50ms 
22.	sleep_for(50ms);
23.	cout << "..........";
24.	//this will print after 50ms or sleep period complete
25.	cout << "\nDone";
26.	return EXIT_SUCCESS;
27.	}

输出 :

your program is paused !
Press Enter to continue

Continuing ...........
Done

解释

在这里,我们把get(stdin)作为暂停程序的参数,它与控制台输入相对应。当用户按下回车键时,getc()函数接受它并使程序暂停整个睡眠期。当睡眠期结束时,它将打印完成信息。

让我们检查一下你的知识水平

问题1

以下哪个方法不用于暂停?

pause()

getc(stdin)

getchar()

exit()

在C++中,有许多方法或函数可用于暂停程序。pause(),getchar()等(stdin)是用来暂停程序的。而exit是用来终止C++程序的。

问题2

pause()方法的缺点是什么?

暂停()方法是针对窗口的,并且是可移植的。

暂停()方法对其他操作系统没有用。

暂停方法是一个系统调用,需要分配额外的内存。

以上都是

暂停方法是一个针对窗口的方法,这意味着它不具有可移植性。因为它在Linux或MacOS上不能工作。它进行系统调用,分配额外的资源来执行操作。因此,上述所有操作都是正确的。