我想比較wxstrings來確定我的程序會做什麼。我正在比較的字符串基於我正在閱讀的文件,並且是文件中的唯一行。C++ wxwidgets比較wxstrings
我使用wxSmith激活的代碼塊。
這是我嘗試工作的程序部分。
void Disc_MasterFrame::OncdiscClick(wxCommandEvent& event)
{
system("sh detect-disc.sh");
wxString file;
file << wxT("detect-disc");
wxTextFile tfile;
tfile.Open(file);
detectdiscw=tfile.GetFirstLine();
//std::ifstream myfile ("detect-disc");
//getline (myfile,detectdisc);
//myfile.close();
cd << wxT("An audio cd was inserted.");
dvd << wxT("A dvd was inserted.");
if (detectdiscw == cd){
//musicrip->Show();
//this->Disc_MasterFrame::ripmusic();
void ripmusic();
}
else if (detectdiscw == dvd)
{
manipdvd->Show();
void dvdmanip();
}
}
void Disc_MasterFrame::ripmusic()
{
musicrip->Show();
system("sh disc-info.sh");
...
當點擊該按鈕時,腳本應該運行,但它確實,因爲它產生使用cdde命令(LINUX/Ubuntu的CLI程序)的文件。 此命令的結果是「插入了音頻CD」。所以我在測試時保持一致。
然後打開並讀取文件並嘗試將其與兩個預定義的字符串進行比較。 一旦完成,它應該'顯示'已經創建的兩個面板之一。
我很確定我做錯了什麼,因爲它只是在按鈕被點擊後坐在那裏。
任何幫助或方向將不勝感激,謝謝。
這似乎是一個令人沮喪的問題。您是否使用調試器完成了代碼?這通常會告訴你確切的代碼出錯的地方,甚至可以使修復變得明顯。嘗試一下,讓我們知道問題出在哪裏。 – ravenspoint 2012-07-25 20:08:09
爲什麼你在調用'ripmusic'和'dvdmanip'之前有'void'?如果你忽略了返回值,你應該使用'(void)'來施放返回值(注意parens)。 – 2012-07-25 20:09:58
嘗試在最後的'else'子句中添加* print *語句。如果您將'if' -'then'階梯轉換爲'switch'語句,您可以更好地看到問題。換句話說,如果'detectdiscw'的值不是cd或dvd,而是其他的東西,會發生什麼? – 2012-07-25 20:12:48