我刚开始使用C ++,我需要一些帮助。我有一个现有的cmd提示界面,我必须创建一个gui。
我需要将.txt文件中的数据存储到数组中。该文件在文件浏览器中打开,用户选择它。我如何制作它以便调用该方法?
这是我的按键代码:
private: System::Void btnVenue_Click(System::Object^ sender, System::EventArgs^ e) {
OpenFileDialog ^ openFileDialog1 = gcnew OpenFileDialog();<
openFileDialog1->Filter = "Text File|*.txt";
openFileDialog1->Title = "Select a Venue File";
if(openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
{
System::IO::StreamReader ^ sr = gcnew<br>
System::IO::StreamReader(openFileDialog1->FileName);
// MessageBox::Show(sr->ReadToEnd());
sr->Close();
}
}
这是我的LoadVenueData,它从文本文件加载数据。
void CLoader::loadVenueData(string filename)
{
string line;
int examIndex = 0;
ifstream myfile(filename.c_str());
if (myfile.is_open())
{
// Read venue data
for (int i = 0; i < numSessions; ++i)
{
int number;
myfile >> number;
sessions[i].setCapacity(number);
}
myfile.close();
}
else
std::cerr << "Cannot open venue file: " << filename;
};
答案 0 :(得分:1)
要从std::string
创建System::String
,您可以使用Microsoft中的marshal_as
个库
代码看起来像
obj.loadVenueData(msclr::interop::marshal_as<string>(openFileDialog1->FileName);
如果可能的话,这里可能会有一个广泛的替代方案(参见文件名字符等的评论)。
obj.loadVenueData(msclr::interop::marshal_as<wstring>(openFileDialog1->FileName);