我一直遇到终端问题,但我想知道这样的事情是否合法:
int main(int argc, char *argv[])
{
if(argv[3] = "today")
{
//do something
}
}
否则,我可以使用c-strings比较它们吗?
答案 0 :(得分:3)
不,这在语法或逻辑上都不合法。
您需要使用strcmp
。
if (argc >= 4 && strcmp(argv[3], "today") == 0) {
//matched
}
(或者,正如DietmarKühl建议的那样,你可以使用std :: string并大大简化你的编码生活。)
答案 1 :(得分:2)
程序参数只是指向char
数组的指针。您正在比较指针而不是字符串内容。最简单的方法是使用std::string
比较参数,例如:
if (argv[3] == std::string("today")) {
...
}
答案 2 :(得分:2)
int main(int argc, char *argv[])
{
std::vector<std::string> arguments(argv, argv + argc);
if (arguments[3] == "today")
{
//do something
}
}
答案 3 :(得分:0)
char* or arrays
无法与=
运算符进行比较。您需要使用strcmp()
函数
int main(int argc, char *argv[])
{
if(strcmp(argv[3], "today") == 0)
{
//do something
}
}
答案 4 :(得分:0)
总是会返回false。您正在比较两个地址,而不是两个字符串。你想要做的是比较这些地址的内容,或比较字符串本身。
在C中,首选方法是使用函数strcmp
:
if (strcmp(argv[3], "today") == 0) {
// Do something
}
在C ++中,使用字符串:
if (std::string("today") == argv[3]) {
// Do something
}