您的位置:首页 > 其它

获取文件当前目录

2013-04-27 16:54 134 查看
1. GetCurrentDirectory

此函数是微软Windows 提供的。

头文件为WinBase.h

#ifdef UNICODE
#define GetCurrentDirectory  GetCurrentDirectoryW
#else
#define GetCurrentDirectory  GetCurrentDirectoryA
#endif // !UNICODE


简单来段代码

#include <windows.h>
std::wstring GetCurrentDirws()
{
wchar_t buf[1000];
GetCurrentDirectory(1000, buf);
wstring strPath = buf;
return strPath;
}


2._getcwd

此函数头文件为

 

#include <direct.h>

简单代码:

std::string GetCurrentDirs()
{
char* buffer;
string m_sRe;
if( (buffer = _getcwd( NULL, 0 )) == NULL )
{
perror( "_getcwd error" );
}
else{
m_sRe = buffer;
free(buffer);
}
return m_sRe;
}


两个结果一致。

有篇博客说用微软的函数路径中间不能加  “.”,测试了一下,我的电脑上的可以的。表示奇怪。

来个真相:



msdn帮助文档自己可以找,有事例代码的。贴过来,需要的可以看看头的注释部分。

// crt_getcwd.c
// This program places the name of the current directory in the
// buffer array, then displays the name of the current directory
// on the screen. Passing NULL as the buffer forces getcwd to allocate
// memory for the path, which allows the code to support file paths
// longer than _MAX_PATH, which are supported by NTFS.

#include <direct.h>
#include <stdlib.h>
#include <stdio.h>

int main( void )
{
char* buffer;

// Get the current working directory:
if( (buffer = _getcwd( NULL, 0 )) == NULL )
perror( "_getcwd error" );
else
{
printf( "%s \nLength: %d\n", buffer, strnlen(buffer) );
free(buffer);
}
}


不足之处,多多指教!










                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息