我创建了一个使用<fstream>
保存文本文件的功能。
void save(AnsiString flName, AnsiString &YourText) {
char saving[strlen(YourText.c_str())]; // << ERROR
strncpy(saving, YourText.c_str(), sizeof(saving) - 1);
ofstream ok(flName.c_str(), ios::out);
ok << saving;
ok.close();
}
我在第2行遇到问题。说: 需要持续表达
你可以帮我吗?是否还有其他更有效的方法来保存文本文件?答案 0 :(得分:1)
错误是由尝试创建一个需要恒定大小的数组引起的。
为了解决这个问题,请使用std :: vector。但是,在您的情况下,请使用此:
ofstream out(flName.c_str());
out << YourText;
BTW:您需要阅读C ++教程。绝对。您的代码包含很多难以启动的问题,例如多个一次性错误,无法使用C风格的字符串(即NUL终止的字符串)以及缺乏对C ++中资源管理的理解。此外,您没有任何错误处理。正确性。
答案 1 :(得分:0)
您不能像这样初始化动态大小的数组。您必须通过动态分配(例如malloc或new)
创建它所以你需要:
void save(AnsiString flName, AnsiString &YourText) {
char* saving = new char[strlen(YourText.c_str())];
strncpy(saving, YourText.c_str(), sizeof(saving) - 1);
ofstream ok(flName.c_str(), ios::out);
ok << saving;
delete[] saving;
ok.close();
}
堆栈分配,需要知道编译时分配的大小。编译器无法提前知道YourText的长度。
此代码可以大大简化,但它超出了这个问题的范围。如果你想要一些关于如何重写它的指示,请随意开始聊天。
答案 2 :(得分:0)
数组的大小应该是常量; 您无法使用变量
初始化大小