c++-C++,如何将未知长度的string输入数组

问题描述

C++,如何将未知长度的string输入数组

如代码,我发现程序在运行时会跳过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;
}

解决方案

scanf("%d", &time);输入完后,输入缓冲区还会遗留下一个回车符
然后执行while((temp=cin.get())!='n'),会直接读取遗留的回车,temp就等于'n'了,所以楼主感觉跳过了这句
可以在scanf("%d", &time);后加上fflush(stdin);用来清空输入缓冲区

解决方案二:

同意楼上,或者加getchar()把回车读掉,就不会干扰后面的输入了。

解决方案三:

第一个问题:《C++ primer plus》六的第17章有详细介绍输入输出

第二个问题:
char字符串和其它字符串都是必须要用一个特定的字符作为结束标识''。如果 你的数组包含了类似''的标记符号,你可以用:

 const char* charA="abcde";
    int i=0;//计数器
    while(charA[i]<>'')
    {
        ++i;
    }

来计算里面有多少个字符。

如果你的字符数组或其它数组没有标记则应该在产生这个数组时,在传出数组的同时传出数组的个数。

例如:

你从一个包含了"12 23 34 54"的文本文件中读取数字。
在读取前你是不知道里面包含了多少个数字的。通过计算其中的空格你得到了里面包含的数字个数,
然后用

 int* number=new int[qtyNumber]

得到了数组,这个时候你就必须在传出这个数组的同时将数组中包含的数字个数传出去。到什么地方都能知道这个数组包含了多少个数字

解决方案四:

你的换行符没有处理,导致程序多读取了一个换行符

解决方案五:

用Qt吧,处理字符串很方便的

时间: 2024-09-20 12:09:34

c++-C++,如何将未知长度的string输入数组的相关文章

wpf 控件设置父长度还不够!请输入长度为10-50的问题标题

问题描述 wpf 控件设置父长度还不够!请输入长度为10-50的问题标题 比如Combobox aaa=new Combobox(); aaa.Parent???只能get不能set 在winfrom里面很简单的功能,到了wpf中怎么实现 解决方案 可以直接用父窗体添加:比如Window1.Controls.Add(aaa); 解决方案二: 你在xaml里面把Combobox 写在你要的Parent下面呗

求助C# 把一个长度为1026×512的byte型数组 拆分为512个长度为1026的数组

问题描述 求助C#把一个长度为1026×512的byte型数组拆分为512个长度为1026的数组其中1026长度的最后两个1025和1026为顺序标记位(我已经设置好的)再按照顺序标记,重新组成个长度为1024×512的一个数组(这里的1024是把每个1026最后两个顺序位置删除) 解决方案 解决方案二:贵求大神啊---刚开始搞C#不是很会啊解决方案三:顺序标记就是从0数到511啊解决方案四:for(i=0;i<512;i++){byte[]b=newbyte[1026];for(j=i*102

c++-结构成员含string类型数组,成员的输入问题

问题描述 结构成员含string类型数组,成员的输入问题 要求输入的name可含空格,不知道错哪了,新手求好心人解答,万分感谢! #include#includeusing namespace std;struct donation{ string name; double number;};int main(){ cout<<""Input the number of donater: ""; int d_number; cin>>d_nu

c语言-声明一个数组,由用户输入数组长度。不赋初值不报错,赋初值就报错?为什么

问题描述 声明一个数组,由用户输入数组长度.不赋初值不报错,赋初值就报错?为什么 基本上,代码如下: #include<stdio.h> int main(){ int num = 0; printf(""输入数组长度:""); scanf(""%d""&num); int arr[num]; //编译不报错 //int arr[num] = {0}://编译报错 return 0;} 解决方案 因为C语言

请问C++中用string输入的字符串,如何转换成char[100]的字符串呢?

问题描述 请问C++中用string输入的字符串,如何转换成char[100]的字符串呢? 请问C++中用string输入的字符串,如何转换成char[100]的字符串呢? 解决方案 http://www.aichengxu.com/view/48568 解决方案二: stl 中的string,提供了c_str的方法 函数原型如下 const char* c_str() const 所以你只能得到const char *类型,结尾,但是你非要变成char[100]的类型,你自己去memcpy吧,

c#-C# 如何表示出 string [] str 数组的个数

问题描述 C# 如何表示出 string [] str 数组的个数 数组 string [] str, 如何表示数组str的个数 解决方案 str.length 解决方案二: 这么简单的问题,为啥我就没见过呢-- str.Length str.Count() 解决方案三: str.length

c++ new长度为0的数组

在程序中发现一下代码: int CHmcVideoMgt ::OnGetDiskRunningInfo( SOCKETPARAM *pSocketInfo ,Json:: Value Param ) { int iArrayLen = Param[ _T("NUM" )].asInt(); ..... LPDiskRunningInfo pDiskRunningInfo = new DiskRunningInfo[iArrayLen ]; int nResult = HMCBLL_Ge

java String[]字符串数组自动排序的简单实现_java

如下所示: import java.util.Arrays; public class xulie { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String []str = {"abc","bca","cab","cba","aaa","111&

求算法:判断未知长度数组内值是否全部相等

问题描述 从页面过来的一组数字(过来之前不知道会有多少个数字),存于String数组内了,现想判断其值是否全部相同,全部相同则返回false.小弟新手,想了一夜不知有何可用的算法,求教各位援手. 问题补充:嗯,谢谢,是这个意思.<div class="quote_title">7454103 写道</div><div class="quote_div">不好意思你要的是 false<br /><br />p