0

我正在用 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*.

如何比较这两个字符串?

4

3 回答 3

4

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

if (data->temp == f)

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

if ( s1.compare(s2) < 0 )
于 2013-09-29T20:23:26.197 回答
0

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

std::string f; 
cin>>f; 
if(strcmp(temp->data,f.c_str())==0) 
    cout<<"same";
else 
    cout<<"not same";
于 2013-09-29T20:22:38.553 回答
0

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

#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

于 2013-09-29T20:24:35.643 回答