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