关于while (getline(cin,str)) 死循环解决方案

关于while (getline(cin,str)) 死循环
#include <iostream>
#include <vector>
#include <string>
using namespace std;
 int main()
 {
string str;
vector<string> svec;
while (getline(cin,str))
{
svec.push_back(str);
}
for(vector<string>::size_type ix=0;ix<svec.size();ix++)
{
cout<<svec[ix]<<endl;
}
return 0;

写了一小段程序 想实现一组字符串的输入和输出(包括空格)
现在运行到 while (getline(cin,str))上死循环了 按了ctrl+z也没用 什么原因呀

------解决方案--------------------

#include <iostream>
#include <vector>
#include <string>
using namespace std;
 int main()
 {
    string str;
    vector<string> svec;
    getline(cin,str);
    while (str!="") //空行时退出
    {
        svec.push_back(str);
        getline(cin,str);
    }
    for(vector<string>::size_type ix=0;ix<svec.size();ix++)
    {
        cout<<svec[ix]<<endl;
    }
    return 0;

------解决方案--------------------
楼上正解
istream& getline ( istream& is, string& str, char delim );
istream& getline ( istream& is, string& str );
Return Value
The same as parameter is.

返回值就是第一个参数,你这里是cin,没有输入的时候cin也不会成为NULL,这个不能成为循环退出的条件。