这个程序的作用大概是输入字符串
再输入一个数字
然后把字符串输出
输出的次数等于输入的数字大小
没输入数字的话就默认输出一次
在下面输入字符串的时候出现问题了
不想用string来实现这个功能 就用new来创建的动态数组
但是这个输入语句怎么写? 顺便问下各个输入语句的区别(忽略我那逗比的英语、、、)
#include <iostream>
void output (const char * ch,int n=1);
int main(void)
{
using std::cin;
using std::cout;
using std::endl;
char * ch=new char[];
cout<<"Please enter a sentence:"
<<endl;
//在这里加入一个输入语句
if (cin.fail()!=0)
{
cin.clear();
while (cin.get()!='\n')
;
cout<<"Error!Please enter the right sentence:"
<<endl;
//同上注释
}
cout<<"Please enter an intger:"
<<endl;
unsigned int n;
cin>>n;
if (cin)
output (ch,n);
else
output (ch);
delete ch;
return 0;
}
void output (const char * ch,int n)
{
using std::cin;
using std::cout;
using std::endl;
if (n>1)
for (int j=0;j<n;++j)
output (ch);
else if (n==1)
cout<<*ch<<endl;
else
cout<<"Error!"<<endl;
}
……不是输入的东西没有写入数组。。。而是我根本没写输入语句。。。因为不知道怎么写
程序的原意是定义一个动态数组 根据输入的长度来决定数组的大小
所以你定义的那个数组和我想的不一样。。。如果数组长度是决定的话那就可以直接用cin.getline(*ch,20);来解决了……但是问题是数组长度不定 用cin>>*ch;只能读入一个字符。。这个可以解决么?
你这个想法不合理,你只有先分配了内存才能往里面存东西,你要分配内存你就得知道分配多大吧,而且cin输入流和文件流不一样,不支持随机访问还有跳转。。。除非你一开始只分配一个,然后每次有输入的时候将原来的先复制再重分配,但是这样效率太低,而且没有必要,你的源程序中while( cin.get()!='\n' );其实已经逐个字符读取了,只是你没有保存
追问……while那点不是用来丢弃错误字符的么……ˊ_ˋ算了,我再看看书吧……我是想根据输入的字符串长度来决定分配的内存大小的,应该可以实现吧,string不就是这样的么
……while那点不是用来丢弃错误字符的么……ˊ_ˋ算了,我再看看书吧……我是想根据输入的字符串长度来决定分配的内存大小的,应该可以实现吧,string不就是这样的么