如题。
比如
“hello”
“10086”
“中华人民”
“四川”
“湖南”
......等等
下面是两个并行的思路,帮忙看看:
1、用一个类似数组的变量可以吗?字符数组怎么实现呢?
2、用cstringarray类可以实现吗?

解决方案 »

  1.   

    最好使用CStringArray,因为可以补丁长度
    而用数组做,你的若干个字符串,做动态数组太麻烦了,嘻嘻~个人意见
      

  2.   

    第一种方法:
    CString strArray[] = {“hello”,“10086”,“中华人民”,“四川”,“湖南” };
    或是 CString* strArray = new CString[5];然后挨个赋值 也可以。
    Func(CString* strArray/*字符串数组指针*/, int count/*字符串数组的个数*/)第二种:
    CStringArray当然也可以,本身就是包装了一下,成为一个动态数组而已
    Func(CStringArray& array);
      

  3.   

    1. 在win环境,还是用CStringArray,不用太多考虑。2. 如果不愿用,可以考虑链表,虽然麻烦点,但是实现完全由自己,可控性强。3. 数组的方法是最简单的,按照可能出现的字符串最大数值,开个足够的数组,比如2MB的,速度绝对够快,反正现在内存不值钱的。
      

  4.   

    这些方法都可以。我习惯用字符串指针数组:
    LPCTSTR Strings[] = {_T("hello"), _T("10086"), ……};
      

  5.   

    为什么不试试std::vector呢?呵呵……CStringArray是在C++标准没出现前的东西,建议不使用哦。
      

  6.   

    如果数目不是太多,可以这样
    void fun(int count, ...)
      

  7.   

    如果这样:
    CStringArray csa;
    csa.SetSize(10);
    但是假如我只是用了其中的4个,那么其余6个是NULL吗?我在程序里面又怎么判断前4个是我需要的数据呢?
      

  8.   

    LPCTSTR Strings[10];
    CString str;
    for(int i=0;i<m_lstContent.GetCount ();i++)
    {
    m_lstContent.GetText (i,str);
    //MessageBox(str);
            Strings[i]=str;
    }
    MessageBox(Strings[2]);
    我在m_lstContent添加了几列,但是不能正确显示啊,乱码,什么问题啊?
      

  9.   

    用vector<string> VKS吧,
      

  10.   

    存字符串的时候
    vector<CString> v_buf;
    CString str;
    str = _T("abc");
    v_buf.pushback(str);
    str = _T("def");
    v_buf.pushback(str);
    用的时候
    for(int i = 0;i < v_buf.size();i++)
    {
      CString str = v_buf[i];
    }vector<CSstring> v_buf; //这么用可能会有警告但是不要紧没事的;
      

  11.   

    其实,最原始的反而最简单。function demo(const char** argv, int argc)
    {
      for(int i = 0; i <argc; i++)
        printf("%s", argv[i]);
    }
    const char** plist = {_T("hello"), _T("10086"), ……};demo(plist, COUNT);
      

  12.   

    超简单的例子,不用担心内存管理问题。#include <vector>std::vector<CString> strArray;strArray.pushback("张三");
    strArray.pushback("男");
    strArray.pushback("88");
    strArray.pushback("汉");
    strArray.pushback("备注:vector比较好用!");void fun(std::vector<CString>& strSome)
    {
        for(UINT i = 0; i < strSome.size(); i++)
        {
            MessageBox( strSome[i] );
        }
    }
      

  13.   

    支持用Vector的朋友们,尽量用C++标准模版库(STL)里面的类,具体用法可以查阅MSDN的例子,看一看,很快就明白
      

  14.   

    用Vector吧,你的这些字符串没什么联系,不然用结构体很不错。
      

  15.   

    谢谢大家,我打算使用CStringArray,但是遇到了些问题.
    我的部分代码:
    线程函数(要完成的功能:检索一个文件夹的文件,文件名中含有我关心的名字的时候,我把它移动到指定的文件夹,下面的代码并不是最终代码):
    UINT CfProcThread(LPVOID param)
    {
    CStringArray *csa=((CFPARA*)param)->keyAndDir ;
    AfxMessageBox(csa->GetAt (1));
    //AfxMessageBox(csa->GetAt (0));
        return 1;
    }
    主函数创建线程:(其中csa是一个CStringArray类型变量,内容已经设置好,但是现在传递不到线程啊!!)
    CFPARA* cfPara=new CFPARA;
    cfPara->sdir =sCheck;
    cfPara->hwnd =m_hWnd;
    cfPara->keyAndDir =&csa;
    cfPara->lpWnd =this;
    AfxBeginThread(CfProcThread,(LPVOID)cfPara);自定义的结构体:
    struct CFPARA
    {
    CString sdir;//=_T("");
    CStringArray *keyAndDir;//=_T("");
    HWND hwnd;
    //int i;
    //BOOL bEnableExit;
    LPVOID lpWnd;
    };现在的问题是,CStringArray 变量csa传递不到线程函数,急死我了!帮帮忙吧高手们!
    我的思路:
    1. 是不是csa作为数组需要传递地址?在结构体中定义CStringArray指针?试了,可是不理想.
    2. "="操作符不能用于CStringArray,那么是不是有两个CStringArray变量传递的方法(不用指针)?
      

  16.   

    其实,怎么做都是方法
      方便使用就好,也可以构造一个xml呀
    做一个xml解析就好, 而且信息可以不固定,内容也可区分
      <persion> 
         <info>
           <name>hello</name>
           <tel>10086</tel>
           .......
           ...
         </info>
         <info>
           <name>hello2</name>
           <tel>10087</tel>
         </info>
         .....
         ...
      </persion>
      

  17.   

    直接使用CStringArray即可操作简单,添加和取值只需要使用Add和GetAt方法在传递参数的时候可以直接使用引用类型
    传递到要使用的地方根据位置使用GetAt就可以取到字符串了
    传递到线程的时候最好把线程体的参数结构参数 CStringArray用单元,不要用指针两个CStringArray相互赋值可以使用Copy方法比如CStringArray  a,b;
    a.Add("你好");
    a.Add("hello");b.Copy(a)
      

  18.   


    在传递参数之前,可以使用Copy方法给 keyAddDir赋值
      

  19.   

    确保csa的生命周期足够长,不要在线程完结之前就出栈了
      

  20.   

    使用了cstring 数组来实现的.传递过去以后,用了一个循环把它传递给了线程里面的一个cstring数组,成功了.
    cstringarray使用起来不太顺,报一个断言有问题,查了,说在内存分配的时候大小-1,不能分到内存空间,不知道什么原因,由于着急把程序写完,就用了cstring数组,谢谢大家了!!