因为是从数据库中查出来的所以有很多项,要把所有的项都放入。

解决方案 »

  1.   

    你是不会为 CListCtrl添加项,还是不会用const string?
    为什么不把你的代码贴一下,难道别人为了给你回,还要新建一个工程来把代码实现一下?
      

  2.   

    strText就是你的CString// The pointer to my list view control.
    extern CListCtrl* pmyListCtrl;CString strText;
    int nColumnCount = pmyListCtrl->GetHeaderCtrl()->GetItemCount();// Insert 10 items in the list view control.
    for (int i=0;i < 10;i++)
    {
       strText.Format(TEXT("item %d"), i);   // Insert the item, select every other item.
       pmyListCtrl->InsertItem(
          LVIF_TEXT|LVIF_STATE, i, strText, 
          (i%2)==0 ? LVIS_SELECTED : 0, LVIS_SELECTED,
          0, 0);   // Initialize the text of the subitems.
       for (int j=1;j < nColumnCount;j++)
       {
          strText.Format(TEXT("sub-item %d %d"), i, j);
          pmyListCtrl->SetItemText(i, j, strText);
       }
    }
      

  3.   

     你需要做虚表.listview需要字符串时会给你发消息,你再告诉它。
      

  4.   

    是这样的大哥,这两个我都会。
    代码如下:
    //item for every line.
    std::string item; while( rs->next() )
    {
    item = rs->getString("username");
    usernames->InsertItem( 0, item.c_str() ); //empty.
    item.clear();
    }
    但是item = rs->getString("username");会出错。因为rs->getString("username");返回的是const string。于是问题就出现了。
    因为SetItemText参数是接收const char* ,而我可以获取的只是const string
      

  5.   

    您是说把item申明为cstring?这有什么区别呢?我现在就想把rs->getString("username");返回的值放入clistctrl中。请问这如何做到呢?
      

  6.   

    string类型里面不是有个c_str的属性吗?用它吧,它是char*的。
    如果是从数据库里面数据放在list里面,我也推荐使用虚表。当然你不需要排序功能的前提下。
      

  7.   

    我把问题再简化一下:大数据量的const string要转换为const char*,因为数据量很大,所以要么直接转换,要么如何需要额外申请空间的话,要这个空间可以复用才行。
    如何转换呢?
      

  8.   

    确定是item = GetString();这句出错吗?string类型接收const string 应该是没错的。
    string::c_str传递给const char*类型也是没问题的。
    不清楚你遇到的问题到底是在哪里?
      

  9.   

    string是不能接收const string的。
      

  10.   

    const std::string item = rs->getString("username");
    usernames->InsertItem( 0, item.c_str() );行不行?
    如果不行,我估计是因为你的工程是unicode的问题,则如下:
    const std::string item = rs->getString("username");
    usernames->InsertItem( 0, CString(item.c_str()) );
      

  11.   

    但是我很多 数据,每次都要申请一个const std::string,内存占用太多了啊!
      

  12.   

    usernames->InsertItem( 0, CString(rs->getString("username").c_str()) );
      

  13.   

    ...string item = ...
    这个是调用 operator=函数,参数是const string&,item本身不是const的。
    string复制时不会翻倍使用内存,相同的串只保留一份。不过你还是应该用virtual list
      

  14.   


    你数据再多,也是一个循环读,所以永远只有一个std::string,比如:for (auto i = 0; i < 100000; ++i)
    {
    std::string = itoa(i);
    }你觉得上面有多少个std::string?
      

  15.   

    我只知道const string 类型不能在运行时被赋值,非const类型怎么会不行了?我经常有用的呀!