我会将我的两个int和float数组分别保存到一个";csv样式"。使用TSaveTextFileDialog的txt文件。我试图在C++ Builder中使用Windows VCL应用程序来实现这一点。
这是我的尝试:
\uuu快速调用TForm6::TForm6(t组件*所有者)
:t表格(所有者)
{
saveTxtDlg=新建TSaveTextFileDialog(此对话框);
TStrings*编码=新的TStringList();
编码->;添加对象(";UTF8";,TEncoding::UTF8);
saveTxtDlg->;编码->;分配(编码);
saveTxtDlg->;过滤器=“文本文件(*.txt)|*.txt”;;
}
void\uu fastcall TForm6::Button2Click(TObject*Sender)
{
if(saveTxtDlg->;执行(此->;句柄))
{
字符串filename=saveTxtDlg->;filename+.txt";;
int encIndex=saveTxtDlg->;编码索引;
TEncoding*enc=动态铸造<;TEncoding*>;
(saveTxtDlg->;编码->;对象[encIndex]);
int x[]={1,2,3,4,5};
浮动y[]={10.1,20.5,30.8,40.7,50.2};
对于(int i=0;i<;5;i++){
std::string s=std::to_string(x[i])+,“+std::to_string(y[i])”;
s、 SaveToFile(文件名,enc);
}
}
}
但是字符串没有“的成员”;SaveToFile";。请问我该怎么解决?先谢谢你
该对话框仅提供用户选择的文件名。您负责实际打开这些文件,并根据需要将数据写入其中
例如,看看像TStringList::SaveToFile(),TFile::WriteAllText()/WriteAllines(),TStreamWriter::Write()/WriteLine(),等等
试着这样做:
void\uu fastcall TForm6::button2点击(TObject*Sender)
{
if(saveTxtDlg->;执行(此->;句柄))
{
字符串文件名=saveTxtDlg->;文件名;
int encIndex=saveTxtDlg->;编码索引;
TEncoding*enc=static_cast<;TEncoding*>;(saveTxtDlg->;Encodings->;Objects[encIndex]);
int x[]={1,2,3,4,5};
浮动y[]={10.1,20.5,30.8,40.7,50.2};
TStringList*txt=新的TStringList;
对于(int i=0;i<;5;++i){
字符串s=字符串(x[i])+quot;,";)+字符串(y[i]);
txt->;添加;
}
txt->;保存文件(文件名,enc);
删除文本;
}
}
或者:
\include<;系统IOUtils.hpp>;
void\uu fastcall TForm6::button2单击(TObject*Sender)
{
if(saveTxtDlg->;执行(此->;句柄))
{
字符串文件名=saveTxtDlg->;文件名;
int encIndex=saveTxtDlg->;编码索引;
TEncoding*enc=static_cast<;TEncoding*>;(saveTxtDlg->;Encodings->;Objects[encIndex]);
int x[]={1,2,3,4,5};
浮动y[]={10.1,20.5,30.8,40.7,50.2};
TStringDynArray txt;
txt.Length=5;
对于(int i=0;i<;5;++i){
字符串s=字符串(x[i])+quot;,";)+字符串(y[i]);
txt[i]=s;
}
TFile::WriteAllines(文件名、txt、enc);
}
}
或者:
void\uu fastcall TForm6::button2点击(TObject*Sender)
{
if(saveTxtDlg->;执行(此->;句柄))
{
字符串文件名=saveTxtDlg->;文件名;
int encIndex=saveTxtDlg->;编码索引;
TEncoding*enc=static_cast<;TEncoding*>;(saveTxtDlg->;Encodings->;Objects[encIndex]);
int x[]={1,2,3,4,5};
浮动y[]={10.1,20.5,30.8,40.7,50.2};
TStreamWriter*txt=新的TStreamWriter(文件名,false,enc);
对于(int i=0;i<;5;++i){
字符串s=字符串(x[i])+quot;,";)+字符串(y[i]);
txt->;写入线;
}
txt->;刷新();
删除文本;
}
}