C++ wxwidgets比较wxstrings
问题描述:
我想比较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”。所以我在测试时保持一致。
然后打开并读取文件并尝试将其与两个预定义的字符串进行比较。 一旦完成,它应该'显示'已经创建的两个面板之一。
我很确定我做错了什么,因为它只是在按钮被点击后坐在那里。
任何帮助或方向将不胜感激,谢谢。
答
在一个wxString中,< <正在将一个字符串附加到现有值(类似于+会做的事情,但是如果需要,可以使用方便的类型转换)。我不确定这是你真正想要做什么。如果你想分配一个新的价值,你的字符串,那么你应该更换< <与=
答
问题在于你的线条
void ripmusic();
和
void dvdmanip();
内您打算调用这些函数,但这些函数声明,而不是函数调用。换句话说,他们什么都不做。从不调用你的函数ripmusic
和dvdmanip
。
这似乎是一个令人沮丧的问题。您是否使用调试器完成了代码?这通常会告诉你确切的代码出错的地方,甚至可以使修复变得明显。尝试一下,让我们知道问题出在哪里。 – 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