簡體   English   中英

無法將'std :: string'轉換為'const char *

[英]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::stringc_str()成員函數來為您提供基礎char數組。

否則,你應該使用operator== ,它可以測試字符串和const char*之間的相等性。

你必須使用c_str(),它應該解決你的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM