在C ++中输入空字符串时中断循环

时间:2014-03-11 17:49:12

标签: c++

我正在从用户那里获取字符串输入。以下是我的代码

cout<<"enter the number of strings";
cin>>size;
int i=0;
while(i<size)
{
     string input="";
     cin.ignore();
     getline(cin,input);
     if(input.empty())
           break;
      i++;
}

当我将输入作为换行符(空白字符串)时,我想终止程序。但上面的代码运行一个额外的计数器。我哪里错了?

2 个答案:

答案 0 :(得分:4)

getline()函数返回包含回车符的数据,因此当提供“空行”时,您的输入实际上不会为空。

DESCRIPTION
     The getdelim() function reads a line from stream, delimited by the char-
     acter delimiter.  The getline() function is equivalent to getdelim() with
     the newline character as the delimiter.  The delimiter character is
     included as part of the line, unless the end of the file is reached.

另请注意,该函数返回写入缓冲区的字符数...您只需检查该值而不是调用input.empty(),同时可以执行错误检查。

答案 1 :(得分:1)

将cin.ignore放在片刻之前,就在它之前

这是代码

int main(){
    int size;
    cout<<"enter the number of strings";
    cin>>size;
    int i=0;
    cin.ignore();
     while(i < size)
    {
     string input="";
     getline(cin,input);
     if(input == "")
           break;
      i++;
    }
}