C++ 这是检查用户输入的好方法吗? do{ std::cout名称; }虽然(!validName(name)&&std::cout

C++ 这是检查用户输入的好方法吗? do{ std::cout名称; }虽然(!validName(name)&&std::cout,c++,while-loop,cin,cout,ostream,C++,While Loop,Cin,Cout,Ostream,在循环本身内执行检查和输出可能更为清晰。您可以通过中断无限循环或继续一次性循环来执行此操作。例如: do { std::cout << "Enter a valid name" << std::endl; std::cin >> name; } while (!validName(name) && std::cout << "It is not a valid name" << std::endl);

在循环本身内执行检查和输出可能更为清晰。您可以通过中断无限循环或继续一次性循环来执行此操作。例如:

do {
    std::cout << "Enter a valid name" << std::endl;
    std::cin >> name;

} while (!validName(name) && std::cout << "It is not a valid name" << std::endl);
do{
std::cout名称;
如果(!有效名称(名称)){
std::cout始终需要检查输入是否成功,例如使用
而(std::cin>>名称){…}
。如果对
名称
有进一步的限制以构成有效的输入,也应该检查这些限制。@ChrisK:“首先使用名称空间std;因此您不必总是添加std”不,理想情况正好相反。
do {
    std::cout << "Enter a valid name" << std::endl;
    std::cin >> name;
    if (!validName(name)) {
        std::cout << "It is not a valid name" << std::endl;
        continue;
    }
} while (false);
for ( ;; ) {
    std::cout << "Enter a valid name" << std::endl;
    std::cin >> name;
    if (validName(name))
        break;

    std::cout << "It is not a valid name" << std::endl;
}
for (int attempt = 0; attempt < 3; ++attempt) {
    std::cout << "Enter a valid name" << std::endl;
    std::cin >> name;
    if (validName(name))
        break;

    std::cout << "It is not a valid name" << std::endl;
}

if (!validName(name)) {
    std::cout << "Failed to get a valid name after 3 tries" << std::endl;
    std::abort();
}