我正在尝试在我的应用程序中读取一个文件,并且弹出一些我不完全理解的错误。
C2227:' - > Equals'的左边必须指向class / struct / union / generic type C3867:'System :: String:ToString':非标准语法;使用'&'至 创建指向成员的指针
以下是代码:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
OpenFileDialog^ open = gcnew OpenFileDialog();
open->InitialDirectory = "c:\\";
open->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
open->FilterIndex = 2;
open->RestoreDirectory = true;
if (open->ShowDialog->Equals(System::Windows::Forms::DialogResult::OK) )
{
textBox1->Text = open->FileName;
}
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
ifstream inFile;
string time;
string name;
Shack shackPref;
pair<int, int> av;
string filename = textBox1->Text->ToString;
inFile.open(filename);
if (inFile.is_open()) {
cout << "File has been opened" << endl;
}
else {
cout << "NO FILE OPENED" << endl;
}
while (!inFile.eof()) {
}
有人可以解释为什么open-&gt; ShowDialog不属于class / struct / union / generic类型?如何重新排列以使其成为正确的输入?我是否需要创建一个包含该数据的结构,如果是这样,' - &gt; Equals'仍然可以将它与DialogResult进行比较吗?
同样的问题是尝试将文件名转换为字符串^中的std:string。当我尝试将Text视为textBox1的成员时,它表示它没有该成员。为什么不' - &gt; ToString'将'Text'识别为成员?
提前感谢您的帮助。我仍然是c ++的新手,所以这对我来说是一个真正的大脑。
答案 0 :(得分:0)
您尝试像属性或成员一样使用ShowDialog,但它是一种方法,因此需要使用括号进行调用。
open->ShowDialog()
ToString同样如此。它需要被调用,因为它是一个功能。
textBox1->Text.ToString();
但是,在String上调用ToString()是没有意义的。您应该能够使用此问题的答案将.net字符串转换为std :: string。