我尝试了以下文档中的代码:
但它不起作用,并报告编译器错误:
在“fmCreate”中没有一个名为“System::AnsiStringT<0>”的成员
下面是我尝试过的代码:
TFileStream *fs; const AnsiString str = "Hello";
fs = new TFileStream("temp.txt", fmCreate);
fs->Write ((void*)str.c_str(), str.fmCreate);发布于 2020-06-13 06:25:15
看上去就像个打字机。显然,代码试图将字符串写入文件,因此需要字符串的长度。尝尝这个
TFileStream *fs; const AnsiString str = "Hello";
fs = new TFileStream("temp.txt", fmCreate);
fs->Write ((void*)str.c_str(), str.Length());我对VCL一无所知。
发布于 2020-06-13 19:23:58
正如John的回答所述,文档中有一个错误。str.fmCreate应该改为str.Length()。
但是,有更好的方法可以将字符串写入文本文件以避免此问题。例如,使用System::Classes::TStreamWriter或System::Ioutils::TFile代替,如:
#include <System.Classes.hpp>
const String str = _D("Hello");
TStreamWriter *sw = new TStreamWriter(_D("temp.txt"), false, TEncoding::UTF8);
sw->Write (str);
delete sw;#include <System.IOUtils.hpp>
const String str = _D("Hello");
TFile::WriteAllText(_D("temp.txt"), str);https://stackoverflow.com/questions/62356033
复制相似问题