簡體   English   中英

無法轉換 &#39;std::basic_string<char> &#39; 到 &#39;const char*&#39; 作為參數 &#39;1&#39; 到 &#39;int system(const char*)&#39;

[英]cannot convert 'std::basic_string<char>' to 'const char*' for argument '1' to 'int system(const char*)'

當我嘗試編譯我的腳本時,我收到此錯誤:“類型為 'const char*' 和 'const char [6]' 的無效操作數到二進制 'operator+'”。 這里應該是錯誤:

string name = "john";
system(" quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '"+name+".jpg'");

表達的類型

" quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '"+name+".jpg'"

std::string 但是函數系統有聲明

int system(const char *s);

也就是說它接受一個const char *類型的參數

沒有轉換運算符可以將std::string類型的對象隱式轉換為const char *類型的對象。

盡管如此,類std::string有兩個函數可以顯式執行此轉換。 它們是c_str()data() (最后一個只能與支持 C++11 的編譯器一起使用)

所以你可以寫

string name = "john";

system( (" quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '"+name+".jpg'").c_str() );

不需要為表達式使用中間變量。

std::string + const char*導致另一個std::string system不接受std::string ,並且您不能將char*+運算符連接起來。 如果您想以這種方式使用代碼,您將需要:

std::string name = "john";
std::string tmp = 
    "quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '" + 
    name + ".jpg'";
system(tmp.c_str());

std::string operator+(const char*)

將字符串文字與std::string相加會產生另一個std::string system需要一個const char* 您可以為此使用std::string::c_str()

string name = "john";
string tmp = " quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '"+name+".jpg'"
system(tmp.c_str());

正如所有其他答案所示,問題在於使用+添加std::stringconst char*導致std::string ,而system()需要const char* 解決方案是使用c_str() 但是,您也可以在沒有臨時文件的情況下執行此操作:

string name = "john";
system((" quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '"+name+".jpg'").c_str());

system 函數需要 const char *,並且您的表達式的類型為std::string 你應該寫

string name = "john";
string system_str = " quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '"+name+".jpg'";
system(system_str.c_str ());

嘗試使用字符串連接

Statistics(string date)
    {
        this->date += date;
    }

acually 這是一個類的一部分..

暫無
暫無

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

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