c++中如何输入多行数据!!!!

打个比方,我要输入n个字符串(n未知),每个字符串占一行(直到没有数据输入才停止)然后再依次输出这n个字符串,每个占一行。 关键请教我如何控制输入输出,谢谢高人!!

#include<iostream.h>
#define N 5//通过改变N的值控制输入的行数,如果是5的话,就不要输入6个字符串,否则会越界
void main()
{ char *s[N];
int n;
cin>>n;
for(int i=0;i<N;i++)
{
s[i]=new char [n];//每个字符串的长度必须小于n
cin>>s[i];}
for(i=0;i<N;i++)
cout<<s[i]<<endl;
for(i=N-1;i>=0;i--)
delete s[i];

}
勉强能实现你的要求,还有一个错误,不是很清楚,欢迎交流...
呵呵,修改后的程序能正常运行....
下面的代码也可以解决问题:
#include<iostream.h>
void main()
{
int i,n;
cin>>n;//输入的字符串数
char **p;
p=new char *[n];
for(i=0;i<n;i++)
{p[i]=new char [20];//每个字符串的最大长度,可根据需要改变
cin>>p[i];}
for(i=0;i<n;i++)
cout<<p[i]<<endl;
for(i=n-1;i>=0;i--)
delete p[i];
}
以上程序在vc6.0中均运行通过...
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-26
//用数组保存。
//用for循环计数。
#include <iostream>
using namespace std;
char s[1000][100];
int main()
{
int n,i;
cout<<"n = ?"<<endl;
while( cin>>n )
{
gets(s[0]);
for(i=0;i<n;i++)
{
gets(s[i]);
}
cout<<"输出:"<<endl;
for(i=0;i<n;i++)
{
puts(s[i]);
}
cout<<"\n\n\nn = ?"<<endl;
}
return 0;
}
第2个回答  2011-05-26
循环 设置个结束字符。因为是每行一个字符串所以不能以回车作为结束符了 楼上的代码n成已知的了。
第3个回答  2011-05-26
写循环。。每次输如1个字符串。
第4个回答  2011-05-26
vector<char> Vec;
copy(istream_iterator<char>(cin),istream_iterator<char>(),back_insert_iterator<vector<char> >(Vec));
copy(Vec.begin(),Vec.end(),ostream_iterator<char>(cout,"\n"));
相似回答