gpt4 book ai didi

C++比较c字符串的麻烦

转载 作者:太空狗 更新时间:2023-10-29 23:22:39 24 4
gpt4 key购买 nike

我编写了以下代码,该代码不起作用,但当我更改它时,第二个代码段会起作用。

int main( int argc, char *argv[] )
{
if( argv[ 1 ] == "-i" ) //This is what does not work
//Do Something
}

但如果我这样写代码,这就可以了。

int main( int argc, char *argv[] )
{
string opti = "-i";

if( argv[ 1 ] == opti ) //This is what does work
//Do Something
}

是不是因为string类有==作为重载成员,所以可以执行这个 Action ?

提前致谢。

最佳答案

Is it because the string class has == as an overloaded member and hence can perform this action?

你是对的。 char * 类型的常规值没有重载运算符。要比较 C 字符串,

if (strcmp(argv[1], "-i") == 0) {
...
}

通过按照您的方式比较字符串(直接使用 ==),您正在比较指针的。由于 "-i" 是一个编译时间常量而 argv[1] 是其他东西,它们永远不会相等。

关于C++比较c字符串的麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1997778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com