CArray不能和STLPORT的string混用? 最近在别人代码上进行一些维护,发现将STLPORT引进来后,有些用到CArray中存放了string类型的结构会有异常,最后跟踪锁定到CArray的问题,发现CArray用到STLPORT的string类型的时候,增加空间,拷贝有问题,string的finish指针没有变化,导致string数据错误;大家有这么用过么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 虽然将CArray改成vector或者将string改成CString可以解决此问题,不过难道微软的CArray就不兼容STLPORT的string么? 要想CArray兼容STLPORT的string,倒不如要 STLPORT的string兼容CArray。不过可以发信问问Gates 不应该存在问题的吧?CArray和vector都相当成熟的CArray也没有对元素对象有什么特殊要求如果有问题,先跟踪一下,看看是什么错误 刚测试过无论是SetSize,还是赋值,都没有问题估计还是你代码的问题 我自己随便写了个Test程序,也会出现啊struct TestClass{ int i; string str;}CArray<TestClass, TestClass&> array;你定义多个,我自己是5个,然后先不setsize,直接add进CArray,最后写一个循环,读下CArray里面的数据,将TestClass里面的string拷贝出来;或者调试看下内部string结构,就会出现了! 后来发现是debug调试的时候会出现,但是直接运行就OK 环境:VC6 + STLPORT 5.1.4 struct Test{ int i; string str;};CArray<Test, Test&> array; for (UINT n = 0; n < 10; n++) { Test t1; t1.i = n; t1.str = "0000000"; array.Add(t1); } for(n = 0; n < 10; n++) { Test& t1 = array[n]; string str = t1.str; } CArray<Test, Test&> array2; array2.SetSize(10); for (n = 0; n < 10; n++) { Test t1; t1.i = n; t1.str = "0000000"; array2.SetAt(n, t1); } 请问 GET获取网页内容,如何携带cookie 关于工具栏显隐的问题 求助!!listctrl(列表控件)中对列操作的问题 请教SDK下自己定位控件后不显示怎么解决?<在线,解决马上给分:)> 请问用程序怎么样可以得到MSN好友的名单啊? 关于大文件的处理 请问如何找到定义STL的相关资料,急!!! 一个CTreeView的问题! 谁能帮我解答子分类和超分类的概念和用处! 谁知道Symantic C++(好象是这个名字)是什么? 大家都知道有哪些开源的web浏览器啊? 用CSocket类,create()一个socket,create()不带参数,此时是创建的是基于tcp还是udp的?
CArray和vector都相当成熟的CArray也没有对元素对象有什么特殊要求
如果有问题,先跟踪一下,看看是什么错误
无论是SetSize,还是赋值,都没有问题估计还是你代码的问题
{
int i;
string str;
}CArray<TestClass, TestClass&> array;你定义多个,我自己是5个,然后先不setsize,直接add进CArray,最后写一个循环,读下CArray里面的数据,将TestClass里面的string拷贝出来;或者调试看下内部string结构,就会出现了!
{
int i;
string str;
};CArray<Test, Test&> array; for (UINT n = 0; n < 10; n++)
{
Test t1;
t1.i = n;
t1.str = "0000000";
array.Add(t1);
} for(n = 0; n < 10; n++)
{
Test& t1 = array[n]; string str = t1.str;
} CArray<Test, Test&> array2;
array2.SetSize(10);
for (n = 0; n < 10; n++)
{
Test t1;
t1.i = n;
t1.str = "0000000";
array2.SetAt(n, t1);
}