将参数与 C++ 中的整数进行比较
Comparing an Argument with an Integer in C++
我正在玩命令行参数,我一直在尝试在参数编号和输入之间进行比较。因此,如果有人输入 1,则输出将是"难度级别为 1"。
#include <iostream>
#include <cstring>
using namespace std;
int main(ijnt argc, char* argv[])
{
int a;
if (argc[1] == '1')
{
cout << "The difficulty level is " << argv[1] << endl;
return 1;
}
}
我把比较 1 做成字符,但我收到错误"ISO C++禁止在指针和整数 [-fallowive] 之间进行比较"并说错误是
if (argv[1] == '1')
我如何让正在比较的 1 被接受为字符?
argv
是一个字符数组数组...
因此,使用strcmp
进行比较,或者更好的是,将其转换为std::string
并进行比较......但也要确保argc
大于 1。例:
#include <iostream>
#include <cstring>
using namespace std;
int main(int argc, char* argv[])
{
int a;
if (argc > 1 && strcmp(argv[1], "1") == 0)
{
cout << "The difficulty level is " << argv[1] << endl;
return 1;
}
}
或
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
int a;
if (argc > 1 && string(argv[1]) == "1")
{
cout << "The difficulty level is " << argv[1] << endl;
return 1;
}
}
我认为你想要的是if (*argv[1] == '1')
命令行参数是字符数组,因此您需要使用 std::strcmp()
之类的东西来像这样比较它们:
int main(int argc, char* argv[])
{
// check argument exists ...
if(!std::strcmp(argv[1], "1")) // 0 when equal
{
// they are the same here
}
// ...
}
从参数中创建一个 'std::string 可能更简单
if(std::string(argv[1]) == "1")
{
// they are the same here
}
在所有情况下,请确保检查参数是否存在:
int main(int argc, char* argv[])
{
if(!argv[1]) // argument not present (null terminated array)
{
std::cerr << "Expected an argument." << std::endl;
return EXIT_FAILURE;
}
// process arg here
// ...
}
相关文章:
- C++模板函数,用于比较任何无符号整数和有符号整数
- 正在LLVM中检测整数比较条件
- 为什么:不同符号的整数比较只是偶尔发生?
- C++ 如何比较n个排序的整数向量以找到互元素?
- 比较C++中两个整数的最有效和最干净的方法是什么?
- 禁止指针和整数之间的比较C++
- ISO C++禁止指针和整数 [-fpermissive] [c++] 之间的比较
- Qsort() 比较结构体整数的总和
- 比较两个整数在C++中与未知 int 类型的相等性
- Qt 错误 iso c++ 禁止指针和整数之间的比较 -permissive
- 比较整数提升后的结果
- 对压缩整数进行加法、减法和比较
- 如何正确比较整数和浮点值
- 错误:ISO C++禁止在指针和整数 [-fallowive] 之间进行比较
- C++ 将二进制字符串转换为整数或比较 2 个字符串以查找差异数
- "正确"无符号整数比较
- C++,指向整数比较错误的指针
- C++指针与整数比较编译错误
- 为什么此指针/整数比较会生成分段错误
- 这是不可避免的有符号和无符号整数比较吗?