📄 getopt.cpp
字号:
#include "GetOpt.h"#include <tchar.h>#include <stdio.h>// Function name : GetOpt// Description : // Return type : bool // Argument : int &argc// Argument : LPTSTR *&argv// Argument : LPTSTR flagbool GetOpt(int &argc, LPTSTR *&argv, LPTSTR flag){ TCHAR flag2[100]; bool bCheck2 = false; bool bFound; if (flag == NULL) return false; if (flag[0] == _T('-')) { _tcscpy(flag2, flag); flag2[0] = _T('/'); bCheck2 = true; } if (flag[0] == _T('/')) { _tcscpy(flag2, flag); flag2[0] = _T('-'); bCheck2 = true; } for (int i=0; i<argc; i++) { bFound = false; if (bCheck2 && (_tcsicmp(argv[i], flag2) == 0)) bFound = true; if (_tcsicmp(argv[i], flag) == 0) bFound = true; if (bFound) { for (int j=i; j<argc; j++) { argv[j] = argv[j+1]; } argc -= 1; return true; } } return false;}// Function name : GetOpt// Description : // Return type : bool // Argument : int &argc// Argument : LPTSTR *&argv// Argument : LPTSTR flag// Argument : int *nbool GetOpt(int &argc, LPTSTR *&argv, LPTSTR flag, int *n){ TCHAR flag2[100]; bool bCheck2 = false; bool bFound; if (flag == NULL) return false; if (flag[0] == _T('-')) { _tcscpy(flag2, flag); flag2[0] = _T('/'); bCheck2 = true; } if (flag[0] == _T('/')) { _tcscpy(flag2, flag); flag2[0] = _T('-'); bCheck2 = true; } for (int i=0; i<argc; i++) { bFound = false; if (bCheck2 && (_tcsicmp(argv[i], flag2) == 0)) bFound = true; if (_tcsicmp(argv[i], flag) == 0) bFound = true; if (bFound) { if (i+1 == argc) return false; *n = _ttoi(argv[i+1]); for (int j=i; j<argc-1; j++) { argv[j] = argv[j+2]; } argc -= 2; return true; } } return false;}// Function name : GetOpt// Description : // Return type : bool // Argument : int &argc// Argument : LPTSTR *&argv// Argument : LPTSTR flag// Argument : long *nbool GetOpt(int &argc, LPTSTR *&argv, LPTSTR flag, long *n){ int i; if (GetOpt(argc, argv, flag, &i)) { *n = (long)i; return true; } return false;}// Function name : GetOpt// Description : // Return type : bool // Argument : int &argc// Argument : LPTSTR *&argv// Argument : LPTSTR flag// Argument : unsigned long *ubool GetOpt(int &argc, LPTSTR *&argv, LPTSTR flag, unsigned long *u){ TCHAR flag2[100]; bool bCheck2 = false; bool bFound; if (flag == NULL) return false; if (flag[0] == _T('-')) { _tcscpy(flag2, flag); flag2[0] = _T('/'); bCheck2 = true; } if (flag[0] == _T('/')) { _tcscpy(flag2, flag); flag2[0] = _T('-'); bCheck2 = true; } for (int i=0; i<argc; i++) { bFound = false; if (bCheck2 && (_tcsicmp(argv[i], flag2) == 0)) bFound = true; if (_tcsicmp(argv[i], flag) == 0) bFound = true; if (bFound) { if (i+1 == argc) return false; *u = (unsigned long)_ttol(argv[i+1]); for (int j=i; j<argc-1; j++) { argv[j] = argv[j+2]; } argc -= 2; return true; } } return false;}// Function name : GetOpt// Description : // Return type : bool // Argument : int &argc// Argument : LPTSTR *&argv// Argument : LPTSTR flag// Argument : double *dbool GetOpt(int &argc, LPTSTR *&argv, LPTSTR flag, double *d){ TCHAR flag2[100]; bool bCheck2 = false; bool bFound; if (flag == NULL) return false; if (flag[0] == _T('-')) { _tcscpy(flag2, flag); flag2[0] = _T('/'); bCheck2 = true; } if (flag[0] == _T('/')) { _tcscpy(flag2, flag); flag2[0] = _T('-'); bCheck2 = true; } for (int i=0; i<argc; i++) { bFound = false; if (bCheck2 && (_tcsicmp(argv[i], flag2) == 0)) bFound = true; if (_tcsicmp(argv[i], flag) == 0) bFound = true; if (bFound) { if (i+1 == argc) return false; *d = _tcstod(argv[i+1], NULL); for (int j=i; j<argc-1; j++) { argv[j] = argv[j+2]; } argc -= 2; return true; } } return false;}// Function name : GetOpt// Description : // Return type : bool // Argument : int &argc// Argument : LPTSTR *&argv// Argument : LPTSTR flag// Argument : LPTSTR strbool GetOpt(int &argc, LPTSTR *&argv, LPTSTR flag, LPTSTR str){ TCHAR flag2[100]; bool bCheck2 = false; bool bFound; if (flag == NULL) return false; if (flag[0] == _T('-')) { _tcscpy(flag2, flag); flag2[0] = _T('/'); bCheck2 = true; } if (flag[0] == _T('/')) { _tcscpy(flag2, flag); flag2[0] = _T('-'); bCheck2 = true; } for (int i=0; i<argc; i++) { bFound = false; if (bCheck2 && (_tcsicmp(argv[i], flag2) == 0)) bFound = true; if (_tcsicmp(argv[i], flag) == 0) bFound = true; if (bFound) { if (i+1 == argc) return false; if (argv[i+1][0] == _T('-') || argv[i+1][0] == _T('/')) // If the next argument is another option flag, it's a no-match return false; _tcscpy(str, argv[i+1]); for (int j=i; j<argc-1; j++) { argv[j] = argv[j+2]; } argc -= 2; return true; } } return false;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -