为什么getline()需要按两次输入?

时间:2013-10-22 04:05:03

标签: c++

我的代码是

#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
int main(void)
{
int n0,n1,n2;
int move = 0;
long unsigned int arr[3][3];
string  str;
char color[4]={'B','G','C','\0'};
char col[40];
        while( getline(cin,str))
     {
           if(str[0]=='\0')continue;
           int temp=0,n=0;
           int i=0,j=0,k=0;
        do{     if(str[k]!=' ')temp=temp*10+(str[k]-48);
                else {
                    if(temp==0) {k++;continue;
                     }
                arr[i][j]=temp;
                temp=0;
                j++;
               if(j==3){j=0;i++;}}
              k++;
         if(str[k]=='\0' && str[k-1]!=' ')arr[i][j]=temp;
    }while(str[k]!='\0');
    str[0]='\0'; move = 0;


    for(;n!=3;n++)
    {


        for(j=0,k=0;j<3;j++)
        {
            temp=0;
            if(j==n)continue;
            if((j+1)%3==n)k=(j+2)%3;
            else k=(j+1)%3;

            temp= arr[1][n]+ arr[2][n]+arr[0][j]+ arr[2][j]+arr[0][k]+ arr[1][k];  //total movement

            if(n==0 && move==0){move = temp;
                    n0=n,n1=j,n2=k;}
            else if(move>temp){move = temp;
                            n0=n,n1=j,n2=k;}
            else if(move == temp){ if(color[n0]>color[n]){n0=n,n1=j,n2=k;}
                                    else if (color[n0]==color[n] && color[n1]>color[j]){n0=n,n1=j,n2=k;}
                                    }



    }
}


    col[0]=color[n0],col[1]=color[n1],col[2]=color[n2],col[3]=' ',col[4]='\0';


    cout<<col<<move;

}

    return 0;
}

这里当我输入一个字符串并按 Enter 时,courser只会转到新行,但代码不会继续。我必须按 Enter 两次才能继续运行程序。但它应该适用于一个输入。

这里有什么问题?

my input and output and the extra "enter between them"

1 个答案:

答案 0 :(得分:0)

我刚试过运行你的代码。它工作正常只需要输入一次。这就是我在编译器上运行的内容。

#include <iostream>
#include <string>

using namespace std;

int main(void)
{
int n0,n1,n2;
int move = 0;
long unsigned int arr[3][3];
string  str;
char color[4]={'B','G','C','\0'};
char col[40];
    while( getline(cin,str) )
      {
        cout<<"hello";
  }
return 0;

}

输出

Output

输出2

enter image description here

输出3

enter image description here