2013-09-29 72 views
1

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

如何這兩個字符串比較?

+1

如果溫度也是'的std :: string',你可以簡單地使用'如果(臨時== F)' –

+0

如果TEMP-'> data'是'字符*'你可以使用'f.c_str()'。 –

+0

什麼是'temp-> data'的聲明? – Barmar

回答

0

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

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

如果你只需要檢查平等,你可以簡單地使用operator==比較兩個string秒。在你的情況,這似乎是:

if (data->temp == f) 

但是,如果你想通過strcmp提供的功能(也就是說,如果你需要知道哪個字符串按字典的情況下,較大的不相等) ,你可以使用string::compare

if (s1.compare(s2) < 0) 
+0

我試過如果(temp-> data == f),它不起作用。 – user2782405

+0

你的意思是「它沒有工作」? – us2012

相關問題