如何打开txt文件并调用方法? [C ++]

时间:2014-07-23 08:15:23

标签: user-interface c++-cli

我刚开始使用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;
};

1 个答案:

答案 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);