遇到一个有关问题,关于字符串的输入,比较基础,但是确把握不住

遇到一个问题,关于字符串的输入,比较基础,但是确把握不住
从控制太读入若干行字符串,放到一个数组里,我写如下的循环,但是不知道怎么停下来,主要是cin>>这个对象重载>>返回流,我无法把握如何停下来。



// ACM2.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <string>
#include<iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{

int count=5;//初始化数组为5个
string *s1;//备用的
string* s=new string[5];//申请空间
int i=0;//index
while(cin>>s[i])//从控制台读入
{
if(i==count)//判断数组空间是否够读入
{
s1 = new string[2*count];//否则重新申请空间进行,并复制
for(int i=0;i<count;i++)
{
s1[i]=s[i];
}

delete []s;//销毁
s=s1;
count = count*2;//数组空间增长
}


}


for(int i =0;i<count;i++)//输出
{

cout<<s[i]<<endl;
}




return 0;
}
C++ 字符串读入

------解决方案--------------------
直接string就是了
string s;
1)cin>>s;
2)getline(cin,s);
3)getline(cin,s,' ');
------解决方案--------------------
读取一行

std::string line;
if(std::getline(std::cin, line))
{
 //读取成功
}