使用 TFileStream 创建一个文本文件
Create a text file using TFileStream
我尝试了以下文档中的代码:
Reading a String and Writing It To a File
但是不行,报编译错误:
No member named 'fmCreate' in 'System::AnsiStringT<0>'
这是我试过的代码:
TFileStream *fs; const AnsiString str = "Hello";
fs = new TFileStream("temp.txt", fmCreate);
fs->Write ((void*)str.c_str(), str.fmCreate);
嗯,这看起来像是一个错字。显然,代码试图将字符串写入文件,因此需要字符串的长度。试试这个
TFileStream *fs; const AnsiString str = "Hello";
fs = new TFileStream("temp.txt", fmCreate);
fs->Write ((void*)str.c_str(), str.Length());
注意,我对 VCL 一无所知。
如 John 的回答所述,文档中有错字。 str.fmCreate
应该是 str.Length()
。
但是,有更好的方法可以将字符串写入文本文件来避免此问题。例如,通过使用 System::Classes::TStreamWriter
or 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);
我尝试了以下文档中的代码:
Reading a String and Writing It To a File
但是不行,报编译错误:
No member named 'fmCreate' in 'System::AnsiStringT<0>'
这是我试过的代码:
TFileStream *fs; const AnsiString str = "Hello";
fs = new TFileStream("temp.txt", fmCreate);
fs->Write ((void*)str.c_str(), str.fmCreate);
嗯,这看起来像是一个错字。显然,代码试图将字符串写入文件,因此需要字符串的长度。试试这个
TFileStream *fs; const AnsiString str = "Hello";
fs = new TFileStream("temp.txt", fmCreate);
fs->Write ((void*)str.c_str(), str.Length());
注意,我对 VCL 一无所知。
如 John 的回答所述,文档中有错字。 str.fmCreate
应该是 str.Length()
。
但是,有更好的方法可以将字符串写入文本文件来避免此问题。例如,通过使用 System::Classes::TStreamWriter
or 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);