_tmain(int argc, TCHAR* argv[], TCHAR* envp[]) 如何输入命令行参数

_tmain(int argc, TCHAR* argv[], TCHAR* envp[]) 如何输入命令行参数,第1张

这个简单。丛猜如下代码 :

int m_iAc//保存参数的个数升郑前

LPWSTR* m_pAv = CommandLineToArgvW(GetCommandLine(), &m_iAc) //返回argv的指针数组

实际上就是调用两个API函数,一个是GetCommandLine(),一个是CommandLineToArgW(),用它们就可以获取命令行的参数,可以在MSDN中查看它们的用法。

欢迎光临0x30帖吧,分享吵清更多C/C++的知识。

_t 或 _T 这样的前缀或后缀在有些情况下并没有什么意义,如 size_t、uint_t 等。在有些情况下则只是祥李行一个宏,表示一个通用名称,这个名称在编译的时候才能确定,并不是 Windows 专用的。早期的 Windows 系统使用 ANSI 编码,在不同语言编码的系统上运行会出现乱码。而从 2000 开始,Windows 支持 ANSI 和 Unicode 编码,因此所有的与字符有关的 Windows API 均有两个不同的版本,如 SetWindowText 这个 API,事实上是不存在的,只有 SetWindowTextA(用于 char 类型)和 SetWindowTextW(用于 wchar_t 类型)。Linux 系统虽然也用 char 类型,但其 char 是 UTF-8 编码的,不会乱码,因此你很少看到 Linux 上使用 _t。但是 Linux 也有 char 和 wchar_t 数据类型,扰知这点与 Windows 是一致的。即不管在哪个平台,C 语言中的字符类型都有 char 和 wchar_t 两种类型。如 _tprintf 这个宏,本身不是一个函数名,它可能被替换为代表 printf(用于 char 类型)或者 wprintf(用于 wchar_t 类型),取决于是否定义了 UNICODE。同样的 Windows 控制台程序的入口有 main 和 wmain,但是它被定义为 _tmain,这个宏在定义 Unicode 时等于 wmain,未定义是等于 main。Windows GUI 程序入口有 WinMain 和 wWinMain,它被定义为宏 _tWinMain。同样地,上面提到的 SetWindowText,当定义 UNICODE 时,SetWindowText 被定义为 SetWindowTextW,未定义时代表 SetWindowTextA。在 C 语言中,wchar_t 类型的宽字符在声明时,字符或字符串串前需要加 L 以便编译器知道这是宽字符。所以针对字符串也定义了宏 _T,其 Windows 版名称为 TEXT。谨哗_tprintf 和 _T 这样的宏都是 C 标准,定义在 tchar.h 中。现以一个简单的命令行程序说明一下这些宏的意义。假如有这样的代码:

#include <stdio.h>

#include <stdlib.h>

#include <tchar.h>

#include <windows.h>

int _tmain(int argc, TCHAR *argv[])

{

TCHAR szText[] = TEXT("Sample string.")

_tprintf(TEXT("%s"), szText)

SetWindowText(GetDesktopWindow(), szText)

return 0

}

定义 UNICODE 时,等同于:

int wmain(int argc, wchar_t *argv[])

{

wchar_t szText[] = L"Sample string."

wprintf(L"%s", szText)

SetWindowTextW(GetDesktopWindow(), szText)

return 0

}

未定义 UNICODE 时,等同于:

int main(int argc, char *argv[])

{

char szText[] = "Sample string."

printf("%s", szText)

SetWindowTextA(GetDesktopWindow(), szText)

return 0

}

不过 wmain、WinMain、wWinMain 这几个入口是 Windows 特有的。

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) 这是带MFC功能的控制台程序主函数声明,其中argc是输入参数个数租培;argv[]是参数字符串数组;envp[]是环境弊坦唯变量字符串数组,下面是取得和显示他们的代码:信神//注意:必须设置此项才能输出宽字符串 _tsetlocale(LC_ALL, _T("chs"))_tprintf(_T("参数: %d 个\n"),argc)//显示参数个数 _tprintf(_T("\n"))//换行 //显示所有参数 for (int i=0i<argc++i) { _tprintf(_T("输入参数 [%d] = [%s]\n"), i, argv[i])} _tprintf(_T("\n"))//换行 //显示环境变量 for (int i=0i<argc++i) { _tprintf(_T("环境变量 [%d] = [%s]\n"), i, envp[i])} _tsystem(_T("pause"))//使DOS窗口暂停,不马上退出


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12561369.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-26
下一篇2025-08-26

发表评论

登录后才能评论

评论列表(0条)

    保存