退出循环,除非没有给出输入

时间:2018-04-09 15:48:08

标签: c++ while-loop

int main()
{
string name;
while(cin>>name)
{
    if(name=='\n')
       break;
    else
    {
        cout<<name;
    }
}
cout<<"Exited";
}

这里我需要输入,直到用户没有输入或跳过新行。我无法完成代码。

4 个答案:

答案 0 :(得分:5)

要观看:

  1. 让我们添加正确的标题。
  2. 不要让using namespace std;导致问题。
  3. 让我们使用getline()而不是operator>>,这样我们才能看到整行
  4. 允许使用std::string而不是C-array字符。
  5. 可以在while测试中检查空行。
  6. 让我们添加'\n',以便我们看到输出。
  7. 让我们做一些不错的格式化。
  8. 结果:

    #include <iostream>
    #include <string>
    int main()
    {
        std::string name;
        while(std::getline(std::cin, name) && name != "")
        {
            std::cout << name << "\n";
        }
        std::cout << "Exited\n";
    }
    

答案 1 :(得分:2)

新行字符'\n'是一个空格字符,默认情况下会被运算符跳过&gt;&gt;用于输入流。而是使用例如成员函数getline

这是一个示范程序

#include <iostream>

int main() 
{
    char name[30];

    while ( std::cin.getline( name, sizeof( name ) ) && name[0] )
    {
        std::cout << name << std::endl;
    }

    std::cout << "Exited\n";

    return 0;
}

答案 2 :(得分:2)

您的代码中存在多个问题 首先,你不能放&#34; cin&gt;&gt;名字&#34;在条件下 这完全错了。

你有字符数组(名称[30]) 然后你想把它与用户的输入进行比较,你没有声明数组错误

然后再次在你的下一个条件名称==&#39; \ n&#39;对你想要的东西无效 在我们的cmd控制台中,我们只能放置一个您无法使用的字符&#39; \ n&#39;

在主要功能结束时你必须返回一些东西(可能令人困惑) 只写&#34;返回0;&#34;最后,它会没事的 我建议你使用这段代码::

#include <iostream>

    using namespace std;

    int main(int argc, char** argv) {
        char name[30];
    while(1)
    {
        cin >> name;
        if( name[0] =='E')
           break;
        else
        {
            cout<<name;
        }
    }
    cout<<"Exited";


        return 0;
    }

如果用户输入“E&#39;如果条件变为真,我们就会退出。

答案 3 :(得分:1)

使用std :: string。

A  + B => C