如何获得命令行参数' up'或者' down'或0到0.50之间的值,1? (我必须使用_TCHAR * argv [])?它是不可能使它工作,是否有任何天才。
int _tmain(int argc, _TCHAR* argv[]) {
double SDK;
// command line input:
// user.exe up
// user.exe down
// user.exe 0.50
if (argv[1] == 'up') {
SDK= _tstof(0.85); // FAIL _T or (TCHAR*) or ...
}
else if(argv[1]== 'down') {
SDK= _tstof(0.50); // FAIL _T or (TCHAR*) or ...
}
else {
SDK= _tstof(argv[1]); // This works
}
//
// 3rd party SDK needs _TCHAR* argv[]
//
}
编辑:只能按照以下方式工作,但这不是正确的做法。
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[]) {
double SDK;
if (argv[1][0] == 'u') {
printf("up: \n");
SDK = 0.85;
}
else if (argv[1][0] == 'd') {
printf("down: \n");
SDK = 0.50;
}
else {
printf("else: \n");
SDK = _tstof(argv[1]);
}
}
答案 0 :(得分:1)
您的代码有多个问题:
if (argv[1] == 'up')
这不起作用。在C/C++
中,您必须使用"
来表示字符串文字。此外,您正在比较指针,而不是字符串。
if(strcmp(argv[1], "up") == 0)
另一个问题是_tstof
的使用,它在你使用float时将字符串转换为float,就好像它是一个指向字符串的指针,将它转换为已经存在的浮点数。
最后一行:
SDK= _tstof(argv[1]);
除非你的参数是数字的字符串表示,否则也可能不起作用。所以你可能会检查字符串是否真的是一个数字,而不是别的。
#include <Windows.h>
#include <WinNT.h>
int _tmain(int argc, TCHAR* argv[]) {
double SDK;
// command line input:
// user.exe up
// user.exe down
// user.exe 0.50
if (strcmp(argv[1], "up") == 0)
SDK= 0.85;
else if(strcmp(argv[1], "down") == 0)
SDK= 0.50;
else
SDK = atof(argv[1]);
//
// 3rd party SDK needs _TCHAR* argv[]
//
}