(C ++ / CLI)将文本框的内容设置为.txt的内容

时间:2016-08-25 12:35:18

标签: c++-cli iostream fstream

我希望将文本框的内容设置为.txt文件的内容, 但是我无法让它发挥作用。我有一个按钮,可以“刷新” 文本框的内容为.txt文件的内容,这是我正在使用的代码:

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    std::ifstream dat1("DataStore.txt");
    String^ textHolder;
    if (dat1.is_open())
    {
        while ( getline(dat1, line) )
        {
            textHolder += line.c_str;
        }
        textBox1->Text = textHolder;
        dat1.close();
    }
    else textBox1->Text = "Unable to open file";
}

编译程序时出现以下两个错误:

error C3867: 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>::c_str': function call missing argument list; use '&std::basic_string<char,std::char_traits<char>,std::allocator<char>>::c_str' to create a pointer to member

error C2297: '+=' : illegal, right operand has type 'const char *(__thiscall std::basic_string<char,std::char_traits<char>,std::allocator<char>>::* )(void) throw() const'

我如何使这项工作?

注意:我试图在文本框中显示整个.txt文件的内容

2 个答案:

答案 0 :(得分:2)

如果您打算使用C ++ / CLI,您也可以利用.net。您可以使用File类为您读取文件:

System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
{
    textBox1->Text = System::IO::File::ReadAllText("DataStore.txt");
}

您需要希望进程工作目录包含该文件。在GUI应用程序中,通过指定文件的完整路径可以更好地服务,因为工作目录通常是定义不明确的。

如果您正在尝试学习C ++,那么可能无法启动.net C ++ / CLI WinForms应用程序。

答案 1 :(得分:1)

您忘记结束方法c_str,将其更改为c_str()