C++ cli (C+;+;/CLI)将文本框的内容设置为.txt的内容
我希望将文本框的内容设置为.txt文件的内容, 但是我不能让它工作。我有一个按钮可以“刷新”屏幕 文本框的内容转换为.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
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
名称空间声明。否则,您需要完全限定名称。根据最新更新。感谢您的帮助!