开发者社区> 问答> 正文

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;
}

展开
收起
a123456678 2016-03-09 13:43:04 3641 0
1 条回答
写回答
取消 提交回答
  • 第一个问题:《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]
    得到了数组,这个时候你就必须在传出这个数组的同时将数组中包含的数字个数传出去。到什么地方都能知道这个数组包含了多少个数字

    2019-07-17 18:55:57
    赞同 展开评论 打赏
问答分类:
C++
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载