[英]Cannot convert ‘std::string’ to ‘const char*
嗨,任何人都可以告訴這段代碼有什么問題嗎?
string s=getString(); //return string
if(!strcmp(s,"STRING")){
//Do something
}
編譯時我得到的錯誤就像
error: cannot convert ‘std::string’ to ‘const char*’ for argument ‘1’ to ‘int strcmp(const char*, const char*)’|
strcmp
接受const char*
作為參數。 您可以使用c_str
方法:
if(!strcmp(s.c_str(),"STRING"))
或者只是使用重載的operator==
for std::string
:
if(s == "STRING")
您需要使用s.c_str()
來獲取std::string
的C字符串版本,其行如下:
if (!strcmp (s.c_str(), "STRING")) ...
但我不確定為什么你不會只使用:
if (s == "STRING") ...
這更具可讀性。
您可以像在其他答案中一樣在std::string
上使用c_str()
方法。
你也可以這樣做:
if (s == "STRING") { ... }
哪個更清楚,也不假裝你在寫C.
如果要保持比較字符串的C方式,必須使用std::string
的c_str()
成員函數來為您提供基礎char
數組。
否則,你應該使用operator==
,它可以測試字符串和const char*
之間的相等性。
你必須使用c_str(),它應該解決你的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.