高手给指点一下,是不是CString的Left不好使了??

senses1 2005-04-11 02:21:04
有以下代码:
int a = fileconfig.GetLength();
fileconfig.Read(temp.GetBuffer(a),a);
fileconfig.Close();
TRACE("%s\n\n",temp);
int pospath = temp.Find("|||",0);
TRACE("%d\n\n",pospath);
CString defsavepath=temp.Left(pospath);
TRACE("%s\n\n",defsavepath);
说明如下:fileconfig是CFile类的,读取了config.ini文件
config文件18字节内容是:C:\download|||5|||
TRACE后的结果是:
temp:C:\download|||5|||妄
pospath:11
defsavepath:C:\download|||5|||妄
主要问题是:为什么Left没有剪掉第一个|||之后的字符串?
...全文
283 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
vcmute 2005-04-11
  • 打赏
  • 举报
回复
提醒你的疏漏的同时,是在说解决之道,
senses1 2005-04-11
  • 打赏
  • 举报
回复
to eEriEs(阿蒙) :
您的方法通过调试,可行,谢谢您的帮助!!
to vcmute(横秋) :
感谢您的帮助,使我注意到了应该留意的编程的细节问题,和我个人学习时所疏漏的地方。
to Mackz(在相互):
同样谢谢您的热心帮助!
谢谢你们大家的帮助!!
vcmute 2005-04-11
  • 打赏
  • 举报
回复
用了GetBuffer,却忘了ReleaseBuffer
fileconfig.Close();
temp.ReleaseBuffer();
菜牛 2005-04-11
  • 打赏
  • 举报
回复

int a = fileconfig.GetLength();
LPTSTR s = new TCHAR[a + 1]
fileconfig.Read(s, a);
s[a] = 0;
temp = s;
eEriEs 2005-04-11
  • 打赏
  • 举报
回复
呵呵,atl限制了,这样吧

char buf[MAX_PATH];
memcpy(buf,(const char*)temp,pospath);
buf[pospath]=0x0;
CString defsavepath=buf;
再不行就太牛了!!
senses1 2005-04-11
  • 打赏
  • 举报
回复
to xift_2008(滔滔)、 qiuxiangyong(qxy):
谢谢,可是怎么解决这个问题啊?
to eEriEs(阿蒙) :
感谢您的细致解释,可是您的解决方法行不通,出现以下调试错误:
AtlThrow: hr = 0x80070057
Warning: constructing COleException, scode = E_INVALIDARG ($80070057).
SonicDown.exe 中的 0x77e53887 处最可能的异常: Microsoft C++ exception: COleException @ 0x0012e950
难道读取INI一定要用WritePrivateProfileString/GetPrivateProfileString?
xqk 2005-04-11
  • 打赏
  • 举报
回复
这段代码绝对没问题
忠向 2005-04-11
  • 打赏
  • 举报
回复
同意滔滔的,字符串指针没有自动尾部加截断符号的
eEriEs 2005-04-11
  • 打赏
  • 举报
回复
因为temp中的内容是一个内存块,并不是你希望的字符串(字符串以\0x0标志结束),所以针对字符串的.left()可能会出现错误,建议用.SetAt(pospath,(char)0x0)
sungengyu 2005-04-11
  • 打赏
  • 举报
回复
int pospath = temp.Find("|||",0);

看看 pospath 的值。
xift_2008 2005-04-11
  • 打赏
  • 举报
回复
你的temp不是CString, 先转换成CString再试试!
sad_4978 2005-04-11
  • 打赏
  • 举报
回复
我用这个也不好用。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧