C++ 中的比较

发布于 2024-10-09 04:26:17 字数 260 浏览 1 评论 0原文

情况下比较两个 const char * 而言,这段 C++ 代码是否有效?

const char * t1="test1";
const char * t2="test2";

t2 = "test1";
if ( t1 == t2 ) {

cout << "t1=t2=" << t1 << endl;

}   

就在不使用 strcmp

Is this valid code in C++ in terms of comparing two const char *

const char * t1="test1";
const char * t2="test2";

t2 = "test1";
if ( t1 == t2 ) {

cout << "t1=t2=" << t1 << endl;

}   

without using strcmp?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笑红尘 2024-10-16 04:26:17

不,您正在比较指针值(即:地址),而不是它们的内容。该代码并不是无效的,它只是可能没有达到您的预期。

在 C++ 中,您应该避免 const char * 并使用 std::string

#include <string>

std::string t1("test1");
std::string t2("test2");
if (t1 == t2) {
    /* ... */
}

No, you are comparing the pointers values (ie: addresses), not their content. That code is not invalid, it just probably does not do what you expect.

In C++, you should avoid const char * and go for std::string :

#include <string>

std::string t1("test1");
std::string t2("test2");
if (t1 == t2) {
    /* ... */
}
一梦浮鱼 2024-10-16 04:26:17

它是有效的,但它并不像你想象的那样。指针上的 == 检查它们是否指向相同的内存地址。如果在不同位置有两个相同的字符串,则它将不起作用。

如果您熟悉 Python,这类似于该语言中 is== 之间的区别。

It's valid, but it doesn't do what you think it does. == on pointers checks whether they point to the same memory address. If you have two identical strings at different locations, it won't work.

If you're familiar with Python, this is similar to the distinction between is and == in that language.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文