为什么我无法获取目录名称
Why I can't get directory name
我的程序,我在其中使用 Win API:
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
using namespace std;
int _main(int argc, _TCHAR* argv[]) {
char *fileExt = NULL;
TCHAR szDir[MAX_PATH];
GetFullPathName(argv[0], MAX_PATH, szDir, &fileExt);
printf("Full path: %s\nFilename: %s\n", szDir, fileExt);
return 0;
}
我使用了 here and here 中的示例,但我收到一条错误消息:“char *”类型的参数与“LPWSTR”类型的参数不兼容。
我的错误在哪里?
如下定义的字符串称为 ANSI 字符串。
char* fileExt = NULL;
下面定义的字符串可以是ANSI字符串或Unicode字符串。您的项目是使用 UNICODE/_UNICODE
宏编译的,因此它是一个 Unicode 字符串。
TCHAR szDir[MAX_PATH];
不能混用,VC++中的数据类型标识符如TCHAR
和LPCTSTR
的介绍请参考this article .
我对你的代码做了一些修改,如下所示。
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR *fileExt = NULL;
TCHAR szDir[MAX_PATH];
GetFullPathName(argv[0], MAX_PATH, szDir, &fileExt);
_tprintf(_T("Full path: %s\nFilename: %s\n"), szDir, fileExt);
return 0;
}
我的程序,我在其中使用 Win API:
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
using namespace std;
int _main(int argc, _TCHAR* argv[]) {
char *fileExt = NULL;
TCHAR szDir[MAX_PATH];
GetFullPathName(argv[0], MAX_PATH, szDir, &fileExt);
printf("Full path: %s\nFilename: %s\n", szDir, fileExt);
return 0;
}
我使用了 here and here 中的示例,但我收到一条错误消息:“char *”类型的参数与“LPWSTR”类型的参数不兼容。
我的错误在哪里?
如下定义的字符串称为 ANSI 字符串。
char* fileExt = NULL;
下面定义的字符串可以是ANSI字符串或Unicode字符串。您的项目是使用 UNICODE/_UNICODE
宏编译的,因此它是一个 Unicode 字符串。
TCHAR szDir[MAX_PATH];
不能混用,VC++中的数据类型标识符如TCHAR
和LPCTSTR
的介绍请参考this article .
我对你的代码做了一些修改,如下所示。
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR *fileExt = NULL;
TCHAR szDir[MAX_PATH];
GetFullPathName(argv[0], MAX_PATH, szDir, &fileExt);
_tprintf(_T("Full path: %s\nFilename: %s\n"), szDir, fileExt);
return 0;
}