当我在控制台 C++ 程序中键入 STOP 时,我希望我的程序停止接受来自控制台的输入
I want my program to stop accepting input from console when I type STOP in console C++ Program
我正在制作一个接受用户输入(甚至是 \n)的 C++ 程序,但是当我键入 STOP 时程序应该停止,所以任何人都可以帮助我。早些时候我使用的是 getline,但也遇到了一些问题,比如当我输入 \n 两次(按两次输入)时,它会停止整个代码。
所以谁能指导我该怎么做,我想捕获整个输入,直到用户在控制台中键入 STOP。
谢谢。
#include <iostream>
using namespace std;
int main()
{
cout<<"Main Started\n";
char array[10];
string str;
while(fgets(array,sizeof(array),stdin))
{
str = (string) array;
if(str=="STOP") // This line is not getting executed. Also tried strcmp but of no use
break;
}
cout<<"\nMain Ended\n";
return 0;
}
您可以使用 getline:
#include <iostream>
#include <string>
int main() {
std::cout << "Main Started\n";
std::string str;
while(std::getline(std::cin, str)) {
if(str == "STOP")
break;
}
std::cout << "\nMain Ended\n";
return 0;
}
或operator>>
#include <iostream>
#include <string>
int main() {
std::cout << "Main Started\n";
std::string str;
while(std::cin >> str) {
if(str == "STOP")
break;
}
std::cout << "\nMain Ended\n";
return 0;
}
fgets()
在输出中包含 '\n'
,如果读取被 ENTER 终止,那么您需要检查一下,例如:
while (fgets(array, sizeof(array), stdin) != NULL)
{
str = array;
if (str == "STOP" || str == "STOP\n")
break;
}
或者:
while (fgets(array, sizeof(array), stdin) != NULL)
{
if (strcmp(str, "STOP") == 0 || strcmp(str, "STOP\n") == 0)
break;
}
另一方面,std::getline()
(和 std::istream::getline()
)不要在输出中包含终止符 '\n'
:
while (getline(cin, str))
{
if (str == "STOP")
break;
}
我正在制作一个接受用户输入(甚至是 \n)的 C++ 程序,但是当我键入 STOP 时程序应该停止,所以任何人都可以帮助我。早些时候我使用的是 getline,但也遇到了一些问题,比如当我输入 \n 两次(按两次输入)时,它会停止整个代码。
所以谁能指导我该怎么做,我想捕获整个输入,直到用户在控制台中键入 STOP。
谢谢。
#include <iostream>
using namespace std;
int main()
{
cout<<"Main Started\n";
char array[10];
string str;
while(fgets(array,sizeof(array),stdin))
{
str = (string) array;
if(str=="STOP") // This line is not getting executed. Also tried strcmp but of no use
break;
}
cout<<"\nMain Ended\n";
return 0;
}
您可以使用 getline:
#include <iostream>
#include <string>
int main() {
std::cout << "Main Started\n";
std::string str;
while(std::getline(std::cin, str)) {
if(str == "STOP")
break;
}
std::cout << "\nMain Ended\n";
return 0;
}
或operator>>
#include <iostream>
#include <string>
int main() {
std::cout << "Main Started\n";
std::string str;
while(std::cin >> str) {
if(str == "STOP")
break;
}
std::cout << "\nMain Ended\n";
return 0;
}
fgets()
在输出中包含 '\n'
,如果读取被 ENTER 终止,那么您需要检查一下,例如:
while (fgets(array, sizeof(array), stdin) != NULL)
{
str = array;
if (str == "STOP" || str == "STOP\n")
break;
}
或者:
while (fgets(array, sizeof(array), stdin) != NULL)
{
if (strcmp(str, "STOP") == 0 || strcmp(str, "STOP\n") == 0)
break;
}
另一方面,std::getline()
(和 std::istream::getline()
)不要在输出中包含终止符 '\n'
:
while (getline(cin, str))
{
if (str == "STOP")
break;
}