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

C++ cli (C+;+;/CLI)将文本框的内容设置为.txt的内容,c++-cli,iostream,fstream,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.i

我希望将文本框的内容设置为.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'
错误C3867:'std::basic_string::c_str':函数调用缺少参数列表;使用“&std::basic_string::c_str”创建指向成员的指针
错误C2297:“+=”:非法,右操作数的类型为“const char*(\uu thiscall std::basic\u string::*)(void)throw()const”
我该怎么做


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

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

如果您要使用c++/CLI,您还可以利用.net。您可以使用
文件
类为您读取文件:

System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
{
    textBox1->Text = System::IO::File::ReadAllText("DataStore.txt");
}
您需要希望进程工作目录包含该文件。在GUI应用程序中,最好指定文件的完整路径,因为工作目录通常定义不清


如果你想学习C++,那么也许.NETC++/CLI WiFrm应用程序不是开始的地方。

尝试写实际C++代码怎么样?“String ^”不是有效的C++。这是微软标准C++语言的唯一突变。这既不是C++也不是调用Windows API。如果您使用的是C++/CLI,请使用适当的标记。如果目标是.NET,请使用适当的标记。请去掉那些没有的。(令人惊讶的是,现在的开发人员甚至不知道他们正在使用的编程语言或目标平台。看起来确实如此。)每当我使用“String”而不是“String^”时,它都会给我一个错误,告诉我“类System::String不存在默认构造函数”,那么?从什么时候起,
String
(又称
System::String
)就和
std::String
一样了?买几本书,不要使用IDE,除非你懂编程。@nopepoe它会为你带来好处,让你知道你使用的是什么语言。提示:这不是C++的权利,所以有没有任何方法来完成我的要求或不?@nopepoe所以编译后,你的代码不工作?您调试过吗?@DavidHeffernan
可能是std::string,而不是System::string,请检查编译错误。很公平,错过了that@DavidHeffernan“line”是std::string,因为这是“getline()”唯一可以接受的东西。我假设您有一个
使用System::IO
名称空间声明。否则,您需要完全限定名称。根据最新更新。感谢您的帮助!