如何在c ++中将字符串与指针中的字符串进行比较

时间:2013-09-29 20:17:57

标签: c++

我在c ++中实现链表。在那我试图比较存储在节点中的数据与字符串。这是我的代码:

String f; 
cin>>f; 
if(strcmp(temp->data,f)==0) 
    {  cout<<"same"; } 
else 
    { cout<<"not same"; }

这是我的错误:

"assignment1.cc", line 160: Error: Cannot cast from std::string  to const char*.
"assignment1.cc", line 160: Error: Cannot cast from std::string  to const char*.

如何比较这两个字符串?

3 个答案:

答案 0 :(得分:4)

如果您只需要检查是否相等,则可以使用operator==来比较两个string。在你的情况下,这似乎是:

if (data->temp == f)

但是,如果你想要strcmp提供的功能(也就是说,如果你需要知道哪个字符串在字面上更大,以防它们不相等),你可以使用string::compare

if ( s1.compare(s2) < 0 )

答案 1 :(得分:0)

您可以使用std :: string :: c_str方法:

std::string f; 
cin>>f; 
if(strcmp(temp->data,f.c_str())==0) 
    cout<<"same";
else 
    cout<<"not same";

答案 2 :(得分:0)

你可以使用f的“compare()”运算符(http://en.cppreference.com/w/cpp/string/basic_string/compare),也可以使用operator ==

#include <iostream>
#include <string>

int main() {
    std::string f("hello world");
    const char* p = "hello world";

    if (f == p)
        std::cout << "f == p" << std::endl;
}

请参阅http://ideone.com/TTXRZv