为什么我的命令行参数没有被读取?
Why aren't my commandline arguments being read?
我在程序中调用这个:
std::string gameDirectory = "";
for (int i = 1; i < argc; i++)
{
if (argv[i] == "-game")
gameDirectory = argv[i + 1];
}
if (gameDirectory == "")
exit(0);
使用命令行参数
-game demo
,它拒绝设置gameDirectory。什么好主意吗?
argv[i]
的类型为const char*
,指针的直接比较只有在它们指向相同位置时才返回true。程序参数永远不会指向与现有常量字符串相同的位置,因此永远不会访问if
。
您要么需要将任意字符串设置为std::string
(它具有==重载以与char指针进行比较),要么使用strcmp
来比较参数。
if (strcmp(argv[i], "-game") == 0)
打开编译警告!!
main.cpp: In function 'int main(int, char**)': main.cpp:8:24: warning: comparison with string literal results in unspecified behaviour [-Waddress] if (argv[i] == "-game") ^
这个警告告诉你所有你需要知道的(现场)。
使用strcmp
比较c -string
相关文章:
- 我的程序没有从文件中读取并输入数据
- 如果需要转换,我可以在读取参数的同时将其移动到另一个参数吗?
- 我的文件无法正常工作,无法从C++文件中读取上下文
- 为什么我的静态分析器找不到潜在的未初始化读取?
- 为什么我的程序在读取/写入文件时会删除最重要的数字?
- 为什么我的驱动程序只读取部分字符串?
- 如何让我的程序在输入验证的基础上读取素数
- 为什么我的 cout 一次执行,尽管 cin 应该在两者之间读取?
- C++ while 循环没有从我的文件中读取 -1
- 当我读取一个大小为 17 mb 的 100 万个 url 文件时,我的程序占用大小为 163 MB
- 为什么当我使用双精度时,Qt<->Matlab 正确写入和读取我的字节,但存储 uint32 的字节不正确?
- 不会在登录名中读取C++我的文件
- 这是我的程序,C++使用 OpenCv 库从数据集中读取图像序列,但它没有运行
- 如何使用Qt读取我的应用程序屏幕像素数据
- 关于函数调用,我的程序没有读取我的其他函数。为什么?
- C++ 未读取我的 % 运算符(错误:"运算符%"不匹配)
- 为什么getline正在读取我的整个unicode文件
- 我无法让我的程序在函数中读取我的文件
- 代码读取我的循环中的额外行
- 关闭正在读取我的文件的句柄