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);
}
}
不足之处,多多指教!