我在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*.
如何比较这两个字符串?
答案 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;
}