如代码,我发现程序在运行时会跳过cin.get,这是怎么回事啊?另外,关于将未知长度的字符串输入数组,还有什么好办法吗?
int main()
{
int time;
scanf("%d", &time);
int count=0;
while(count < time)
{
string str;
char temp;
int i;
while((temp=cin.get())!='\n')
{
str +=temp;
}
length =str.length();
char* preorder = new char[length];
char* inorder = new char[length];
for(i = 0;i<length;i++)
{
preorder[i]=str[i];
}
for(i=0;i<length;i++)
{
scanf("%c", inorder[i]);
}
sort(preorder, inorder, length);
count++;
delete preorder;
delete inorder;
}
return 0;
}
第一个问题:《C++ primer plus》六的第17章有详细介绍输入输出
第二个问题:
char字符串和其它字符串都是必须要用一个特定的字符作为结束标识'0'。如果 你的数组包含了类似'0'的标记符号,你可以用:
const char* charA="abcde";
int i=0;//计数器
while(charA[i]<>'\0')
{
++i;
}
来计算里面有多少个字符。
如果你的字符数组或其它数组没有标记则应该在产生这个数组时,在传出数组的同时传出数组的个数。
例如:
你从一个包含了"12 23 34 54"的文本文件中读取数字。
在读取前你是不知道里面包含了多少个数字的。通过计算其中的空格你得到了里面包含的数字个数,
然后用
int* number=new int[qtyNumber]
得到了数组,这个时候你就必须在传出这个数组的同时将数组中包含的数字个数传出去。到什么地方都能知道这个数组包含了多少个数字
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。