| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1161 人关注过本帖
标题:[求助]LPCTSTR型字符串?
只看楼主 加入收藏
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
 问题点数:0 回复次数:8 
[求助]LPCTSTR型字符串?

LPCTSTR型字符串字符串中存储的是文件路径加文件名,我想把文件名字分出来,我知道是从后往前找到第一个"\",可是用什么方法把他弄出来?
就像VB里的 str1 = Right$(str,5)

搜索更多相关主题的帖子: LPCTSTR型 字符 str 文件 
2006-04-30 15:56
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
查查CString::Find的参数是怎么用的吧。

http://myajax95./
2006-04-30 16:01
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
得分:0 
多谢斑竹!但查的还是很乱,希望高人指出点睛之笔!

[此贴子已经被作者于2006-4-30 16:30:09编辑过]



2006-04-30 16:05
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
CString str = "C:\\temp\\0430\\abc.txt";
MessageBox(str);

int intFind = str.ReverseFind('\\');
str = str.Right(str.GetLength() - intFind - 1);
MessageBox(str);

http://myajax95./
2006-04-30 16:56
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
得分:0 
看来ReverseFind是反相查找了!
可是还有问题烦劳:
LPCTSTR name ;//传回来的参数
CString StrTmp;
char sName[100];

StrTmp.Format("%s",name);//这样可以吗?
int intFind = StrTmp.ReverseFind('\\');
sName = StrTmp.Right(StrTmp.GetLength() - intFind - 1);//出错cannot convert from 'class CString' to 'char [100],怎么改?

2006-04-30 17:19
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
得分:0 
解决了:
strcpy(sName,StrTmp.Right(StrTmp.GetLength() - intFind - 1));

执行结果没问题,但是就是不知道上一楼中的
StrTmp.Format("%s",name);
和这里的strcpy(sName,StrTmp.Right(StrTmp.GetLength() - intFind - 1));
有没有什么问题?比如内存泄漏等等。。

2006-04-30 17:29
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
得分:0 
另外我用了这样的语句(去掉后缀):
StrTmp =StrTmp.Right(StrTmp.GetLength() - intFind - 1);
memcpy(sName, StrTmp,StrTmp.GetLength()-4);
有没有问题?(测试是通过的)

2006-04-30 17:40
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
LPCSTR是常数指针,所以用他传的时候小心一点。不知你的caller函数是怎么传的,不放心的话可以换成LPSTR或者CString &。别的还都可以,不过感觉memcpy有点危险,因为你等於假设自己完全知道CString的存储结构之后去copy的,听说微软在VC6到VC.net升级的时候改过CString的结构。保险的写法应该是
if (intFind = StrTmp.ReverseFind('\\')) >= 0)
{
StrTmp =StrTmp.Right(StrTmp.GetLength() - intFind - 1);
strcpy(sName, (LPCSTR)StrTmp);
}

http://myajax95./
2006-04-30 23:17
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
得分:0 
多谢多谢,学到很多!

2006-05-08 13:24
快速回复:[求助]LPCTSTR型字符串?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022040 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved