0

我尝试了以下文档中的代码:

读取字符串并将其写入文件

但它不起作用并报告编译器错误:

“System::AnsiStringT<0>”中没有名为“fmCreate”的成员

这是我尝试过的代码:

TFileStream *fs; const AnsiString str = "Hello";
fs = new TFileStream("temp.txt", fmCreate);
fs->Write ((void*)str.c_str(), str.fmCreate);
4

2 回答 2

2

好吧,它看起来像一个错字。显然,代码正在尝试将字符串写入文件,因此需要字符串的长度。尝试这个

TFileStream *fs; const AnsiString str = "Hello";
fs = new TFileStream("temp.txt", fmCreate);
fs->Write ((void*)str.c_str(), str.Length());

警告,我对 VCL 一无所知。

于 2020-06-13T06:25:15.447 回答
0

正如约翰的回答所说,文档中有一个错字。 str.fmCreate应该str.Length()改为。

但是,有更好的方法可以将字符串写入文本文件以避免此问题。例如,通过使用System::Classes::TStreamWriterorSystem::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);
于 2020-06-13T19:23:58.117 回答