How can I write to a file using C++ buider in an Android app?(如何在Android应用程序中使用C++生成器写入文件?)
问题描述
我正在使用Windows 10下的C++Builder(10.3)社区版本来开发一个可以在三星Galaxy A40上运行的应用程序。
我似乎无法解决的一件事是将TListBox的内容保存到文件。
作为Android的新手,我不确定此文件应该出现在哪里,以及我需要哪些权限。
我在一个函数中尝试了以下操作,以将列表框的内容保存到文件中,但似乎无法打开要写入的文件。它始终返回-1:
我是不是漏掉了什么基本的东西?
推荐答案
使用System::Ioutils::TPath
类确定您的应用程序可以访问的各种系统路径。详情请参见Standard RTL Path Functions across the Supported Target Platforms。例如:
但FYI,ListBox1->Items
是TStrings
,它有自己的SaveToFile()
方法,例如:
SaveToFile()
已经为您做的事情。因此,您不需要手动编写字符串--尤其是因为您一开始甚至没有正确编写它们!
在C++Builder中String
是UnicodeString
的别名,UnicodeString
是UTF-16编码的字符串。它的Length()
指定它包含的WideChar
(Android上是char16_t
)元素的数量,但FileWrite()
只处理原始字节。因此,从sizeof(WideChar)=2
开始,您只写入了每个String
字节的1/2。此外,"
"
也不是有效的换行符。您需要使用"
"
或仅使用"
"
,或者使用RTL的sLineBreak
全局常量。但更糟糕的是,您试图以其原始的UTF-16格式编写String
,但却以8位ANSI/UTF-8格式编写换行符。因此,您最终得到的是一个混合编码文件,许多软件将无法正确读取该文件。
如果您确实想要手动编写String
%s,则它需要更像这样:
但是,与其直接使用FileWrite()
,不如考虑使用TStreamWriter
,例如:
这篇关于如何在Android应用程序中使用C++生成器写入文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!