【发布时间】:2021-09-02 23:40:04
【问题描述】:
我执行以下程序为:./aout w。
#include<iostream>
using namespace std;
int main(int argc, char** argv)
{
if (argv[1] == "w")
{
cout << "this was worked";
}
else
{
cout << "this did not worked";
}
}
输出:this did not worked.
我尝试执行:if(&argv[1] == "w")
if(argv[1]=='w')
【问题讨论】:
-
argv[1]是一个指针。"w"是一个衰减为指针的数组。两个指针永远都不会相等。对于 C 风格的以空字符结尾的字符串,您需要使用std::strcmp。或者将其中一个字符串转换为std::string。 -
使用
strncmp进行char[]、char*比较。 -
我通常将参数(省略第一个,因为它不是真正的参数)转换为字符串对象的向量,作为 main 中的第一件事。
auto args = vector<string>(argv+1, argv+argc);在 C++ 中使用args更容易。 -
为什么你认为你在比较一个指针和一个 int?你认为哪个表达式是 int 类型?
-
@Eljay 我建议使用一系列字符串视图来跳过不必要的动态分配。