C++ 除非未给出输入,否则退出循环 intmain() { 字符串名; while(cin>>名称) { 如果(名称=='\n') 打破 其他的 { cout

C++ 除非未给出输入,否则退出循环 intmain() { 字符串名; while(cin>>名称) { 如果(名称=='\n') 打破 其他的 { cout,c++,while-loop,C++,While Loop,新行字符'\n'是一个空白字符,默认情况下,运算符>>会跳过该字符作为输入流。请改用例如成员函数getline 这是一个演示程序 int main() { string name; while(cin>>name) { if(name=='\n') break; else { cout<<name; } } cout<<"Exited"; } #包括 int main() { 字符名[30]; w

新行字符
'\n'
是一个空白字符,默认情况下,运算符>>会跳过该字符作为输入流。请改用例如成员函数
getline

这是一个演示程序

int main()
{
string name;
while(cin>>name)
{
    if(name=='\n')
       break;
    else
    {
        cout<<name;
    }
}
cout<<"Exited";
}
#包括
int main()
{
字符名[30];
while(std::cin.getline(name,sizeof(name))&&name[0])
{
std::cout使用std::string

#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;
}
#包括
#包括
int main()
{
while(true)
{
std::字符串名;
std::cout要观看的节目:

  • 让我们添加正确的标题
  • 让我们不要使用命名空间std;
  • 执行
    ,因为它会导致问题
    
  • 让我们使用
    getline()
    而不是
    operator>
    ,这样我们可以看到整行
  • 让我们使用
    std::string
    而不是字符的
    C-array
  • 可以在while测试中检查空行
  • 让我们添加
    '\n'
    ,以便查看输出
  • 让我们做一些漂亮的格式化
  • 结果:

    #include <iostream>
    #include <string>
    
    int main()
    {
      while (true)
      {
        std::string name;
        std::cout << "Enter a name: ";
        getline( std::cin, name );
        if (!std::cin or name.empty())
          break;
        // do stuff with name here
      }
      std::cout << "Exited\n";
    }
    
    #包括
    #包括
    int main()
    {
    std::字符串名;
    while(std::getline(std::cin,name)&&name!=“”)
    {
    
    std::cout您的代码中有几个问题 首先,您不能将“cin>>名称”置于while条件中 这是完全错误的

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

    然后,在下一个条件中,name=='\n'对于所需的内容无效 在我们的cmd控制台中,我们只能放置您不能使用的字符'\n'

    在main函数的末尾,您必须返回一些内容(可能会让人困惑) 只需在最后写上“返回0”,就可以了 我建议您使用以下代码:

    #include <iostream>
    #include <string>
    int main()
    {
        std::string name;
        while(std::getline(std::cin, name) && name != "")
        {
            std::cout << name << "\n";
        }
        std::cout << "Exited\n";
    }
    
    #包括
    使用名称空间std;
    int main(int argc,字符**argv){
    字符名[30];
    而(1)
    {
    cin>>名称;
    如果(名称[0]=“E”)
    打破
    其他的
    {
    
    CUTUY应该使用<代码> GETLION>代码:ST>::String < /C> >而不是< Calp> char []/Calp>。@ Apple Apple,你这样说是(GETLIN(name)){},并在编译器中打开一个高警告级别:<代码>….MCP.CP:10:21:错误:ISO C++禁止指针和整数之间的比较[-fPrime][Case> <代码>(name=='\n)]。
    要正确使用
    getline
    ,请参阅此处的文档和示例代码:对字符*的无限制输入提取也是代码中的一个严重问题。不要这样做。
    #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;
        }