![_tmain(int argc, TCHAR* argv[], TCHAR* envp[]) 如何输入命令行参数,第1张 _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) 如何输入命令行参数,第1张](/aiimages/_tmain%28int+argc%2C+TCHAR%2A+argv%5B%5D%2C+TCHAR%2A+envp%5B%5D%29+%E5%A6%82%E4%BD%95%E8%BE%93%E5%85%A5%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%82%E6%95%B0.png)
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窗口暂停,不马上退出欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)