MFC写路径问题

写绝对路径
	IDR_MAINFRAME_256       BITMAP                  "C:\\Users\\Administrator\\Desktop\\软件开发C++\\第四个题目\\test2_finish\\test2\\res\\Toolbar256.bmp"
写相对路径
IDR_MAINFRAME_256       BITMAP                  "res\\Toolbar256.bmp"

在相对路径中res是表示是现在这个项目中图片所在文件夹的上一级,而res这个文件夹是资源管理器所在文件夹的名称。

相对路径

imgSrc = imread("./自适应/1.jpg");
imread函数中,一个点代表省略当前文件夹目录,两个点则代表回到上一个文件夹目录。

"\\" 是Windows的目录分割符。
"//"是Linux的目录分割符
//一般用于网络协议中,比如最常用的HTTP://就是超文本传输协议,//一般都用协议名+冒号+//表示,如FTP:// MMS://等等。
\\一般用于局域网中计算机之间的互访,也就是说它后面加一个IP或者机器名,可以访问另一台机器。
在WINDOWS里面很多情况下/和\是可以通用的,也就是说不管你输什么都可以达到相同的目的,尤其是在地址栏中。但是,正规的地址表示还是应该用/,比如C:/WINDOWS等。
\一般在WINDOWS中比较少用。
/为一般字符,可以用作目录/dir ,也可用作两个数相除
\是转移字符,如\n为换行,想输出\、“、%这样的字符,这个可以用\\、\" 放在前面,两个这样便可以。
"./" 加不加都一样,就是指当前目录
"../" 表示当前目录的上级目录,即当前的父目录。

C++中相对路径与绝对路径以及斜杠与反斜杠的区别 - Guo_guo - CSDN博客
有时我们会看到这样的路径写法,“C:\Windows\System”,也就是用两个反斜杠来分隔路径,这种写法在网络应用或编程中经常看到,事实上,上面这个路径可以用"C:/Windows/System"来代替,不会出错。但是如果写成了"C:\Windows\System",那就可能会出现各种奇怪的错误了。至于上述问题出现的原因,要从字符串解析这方面来分析。学过编程的人都应该知道,在C里面,输出字符串时,如果想输出一个换行,那就要加上’\n’这个标志,类似的,输出一个TAB,就加上’\t’,也就是说,反斜杠("")这个符号会把跟在它后面的字符结合起来转义成其它字符。根据这个原理,如果想输出双引号(’"’),就需要输入’"’,这样才会将包含了双引号的字符串正确的写入内存中。那么如果想输入一个反斜杠呢?很简单,只要敲’\'就可以了。
  看到这里或许有些人已经看出眉目了,如果"C:\Windows\System"这个路径字符串交给C编译器编译,实际写入内存的字符串并没有包含反斜杠"",甚至紧跟在反斜杠后面的字母也一起被转义成了其它的字符,再次调用的话势必会出问题。

这几个符号应该要区分清楚,上面说到的/\通用的问题并不适用于所有程序,尤其当涉及到脚本、编程等时一定要区别开。正则表达式中这两个符号的意义也是不同的。

但是现在在VC2013使用时有些作用都是表示文件夹分隔符,其他情况下就不了解。

#define BASE_ASSERT(bf) \
{ \
if(!(bf)) \
{ \
printf("Assert failed at line %d of file %s\n", \
__LINE__,THIS_FILE); \
exit(0); \
} \
}
C++在这里\是行连续的意思,有这个符号,就是下一行是接着上一行的意思,就是下一行和上一行从语法上来说是一行,只是分成了多行来写。连接2行的意思

5

得到系统文件的绝对路径:

CString GetSysPath(void)
{
TCHAR exeFullPath[MAX_PATH];
GetModuleFileName(NULL,exeFullPath, MAX_PATH);
CString szfolder = exeFullPath;
int pos = szfolder.ReverseFind(’\’);
szfolder = szfolder.Left(pos+1);
return szfolder;
}
CString szFile=GetSysPath();

2.    _tcslen()函数:

函数功能:获取字符串的长度。
例子:
CString strFilename = _T(“c:\user\you\test.doc”);
SIZE_T nLen = _tcslen(strFilename); // nLen = 20

分割路径

void _splitpath( const char *path, char drive, char dir, char * fname, char * ext );
通过调用这个函数,可以将driver指向文件所在的盘符(如C:),dir指向文件的目录( \sample\crt\ ,这里没有盘符),fname指向文件的文件名(makepath,没有前面的路径),ext指向文件的扩展名(如.c,有带小数点)。
这样我们就可以得到这个文件的基本信息了。当然通过这些组合就可以得到相关文件的文件名的信息。例如得到文件的全名就可以用strcpy(…)将
fname和
ext组合起来。
需要的头文件是:
char ch[100];
memcpy(ch, m_strPicPath, m_strPicPath.GetLength());
char drive[MAX_PATH], dir[MAX_PATH], title[MAX_PATH], ext[MAX_PATH];
_splitpath(m_strPicPath, drive, dir, title, ext);
strcat(drive, dir);
strcat(title, ext);//将文件名title与文件扩展名ext合并到title中

你可能感兴趣的:(MFC)