大家讨论一下
如何我有一个文本,每行的数据格式为T或R开头的字符串,每行中T或R个数不确定  T=20090909.1200 T=20090910.1050(3) R=1.2:30  T=20080910.1050  R=0.2:3
  .................................
  .................................
  T=20081010.1430 R=3.5:20 T=20090905.1050(6)   
现在我想逐行提取数据,判断T开头的是绝对时间、R开头的是相对时间
因为每个字符串的长度都不同,想问一下我是直接用一个字符数组char ReadDate[25]去存放每个字符串,就是把每个字符串都分配25个字符长度好还是用char *ReadDate = new char[strOneProTime.GetLength()+1]去动态分配内存好!strOneProTime是我提取的一个完整的时间(比如T=20090909.1200或者R=0.2:3),是CString类型的另外注意的是: 我是用for循环去读每行的时间的,读到一个用一个,不知道如果在for循环里面用new的话会不会增大开销,而且由于需要,这个文本的所有内容,包括所有的行都是每1s是读一次。麻烦说一下什么情况下使用new动态分配,什么时候直接用固定的长度去存放字符串方便另,我用了new分配的时候,delete的时候提示出错,分析一下原因吧,谢谢

解决方案 »

  1.   

    代码太长了,而且用到的函数很多
    我是用定时器实现1s读一次文本,目的是提取每行中的T和R的信息
    strOneProTime是我从每行提取的一个具体的时间字符串,是CString类型的
    现在我需要为这些具体的字符串分配空间,去提取具体时间中的每个信息
    我现在问的是 为这些字符串分配空间时用new动态分配好还是把所有字符串看成25个字符的形式直接
    char ReadDate[25]好
      

  2.   

    用固定长度去存变长字符串永远达不到要求 也不方便lz为什么不创建一个CString str[1024]这样的一个CString类型的数组呢
    不用担心 不够放字符串
    不用内存申请
      

  3.   

    char ReadDate[25] 更好吧
    数据多 而且每秒都要读取,用动态分配太浪费时间吧
      

  4.   


    应该没问题的,但是你要明确什么时候进行 delete操作,而且之后要把其指定为NULL不然,因为变量域作用导致指针变成了野指针,访问不存在的区域,就会出错。
      

  5.   

    使用定长字符串数组好,
    内存分配不大但是操作频繁的话,用new效率不高,而且很多内存碎片
      

  6.   

    偶是菜鸟,飘过学习。
    很支持skywoodsky的说法。
      

  7.   

    new会加大开销的,不如事先分配好数组!
      

  8.   

    用CList<CString> m_list;
    while()
    {
      CString m =read line;
      m_list.AddTail(m);
    }完全不必你自己来new和delete了。CList它全给你弄好了。