gpt4 book ai didi

c++ - 将 tprintf 用于 TCHAR argv[0] 并获取问号

转载 作者:行者123 更新时间:2023-11-30 02:31:43 25 4
gpt4 key购买 nike

自从我用 C++ 开发以来已经有一段时间了(10 多年)。我正在尝试通过命令行接受一个值并将其传递给类构造函数。

#include "stdafx.h"

#ifdef _WIN32
#include <windows.h>
#include "WinFolderMonitor.h"
#elif __APPLE__
#elif __linux__
#elif __unix__
#endif

int main(int argc, TCHAR *argv[])
{
if (argc != 2)
{
_tprintf(TEXT("Usage: %s <dir>\n"), argv[0]);
return 0;
}

#ifdef _WIN32
WinFolderMonitor* folderMonitor = new WinFolderMonitor(argv[1]);
#endif

folderMonitor->WatchDirectory();

return 0;
}

但是,我得到的输出并不像预期的那样。相反,我收到了一堆问号,我通常会将其归因于某些编码问题,但我相信我已经正确设置了项目以缓解这种情况。

C:\SVN\monitor.exe
Usage: ?????????e????? <dir>

根据我的理解,我应该看到应用程序文件名。但是我得到了一大堆问号。我已将我的项目设置为在 Visual Studio 中使用“Unicode”。

最佳答案

使用 _tmain 而不是 main。如果定义了 UNICODE,_tmain 将成为 wmain(int argc, wchar_t* argv[])

的宏

另见 msdn:main

int _tmain(int argc, TCHAR *argv[])
{
if (argc != 2)
{
_tprintf(TEXT("Usage: %s <dir>\n"), argv[0]);
return 0;
}

return 0;
}

这通常用于家庭作业。没有必要使这个 ANSI 兼容,除非你也以 Windows 98 为目标。否则你可以使用只有 UNICODE 的版本,例如 const wchar_t *text = L"text"; 等。

关于c++ - 将 tprintf 用于 TCHAR argv[0] 并获取问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37333227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com