如何用 QTextStream 填充一个文件
时间: 2024-03-09 22:50:29 浏览: 15
您可以使用 QTextStream 的 << 运算符将数据写入文件中。下面是一个示例代码,演示如何使用 QTextStream 填充一个文件:
```cpp
#include <QFile>
#include <QTextStream>
int main()
{
// 打开一个文件用于写入
QFile file("example.txt");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return -1;
// 使用 QTextStream 写入数据
QTextStream out(&file);
out << "Hello, World!" << endl;
out << 42 << endl;
out << 3.14 << endl;
// 关闭文件
file.close();
return 0;
}
```
在上面的代码中,我们使用了 QFile 类打开了一个文件用于写入。然后,我们使用 QTextStream 类创建了一个输出流对象 out,并将其与文件对象 file 相关联。最后,我们使用 << 运算符将不同类型的数据写入文件中,并在每行末尾添加了一个换行符。最后,我们关闭了文件。
相关问题
如何用 QTextStream 填充一个文件,然后输出文件的大小?
您可以使用 QFile 类的 size() 函数来获取文件的大小,然后使用 QTextStream 类的 << 运算符将文件大小输出到控制台。下面是一个示例代码,演示如何用 QTextStream 填充一个文件并输出文件的大小:
```cpp
#include <QFile>
#include <QTextStream>
#include <QDebug>
int main()
{
// 打开一个文件用于写入
QFile file("example.txt");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return -1;
// 使用 QTextStream 写入数据
QTextStream out(&file);
out << "Hello, World!" << endl;
out << 42 << endl;
out << 3.14 << endl;
// 关闭文件
file.close();
// 获取文件大小并输出到控制台
qint64 size = file.size();
qDebug() << "File size: " << size << " bytes";
return 0;
}
```
在上面的代码中,我们使用了 QFile 类打开了一个文件用于写入。然后,我们使用 QTextStream 类创建了一个输出流对象 out,并将其与文件对象 file 相关联。最后,我们使用 << 运算符将不同类型的数据写入文件中,并在每行末尾添加了一个换行符。最后,我们关闭了文件并使用 QFile 类的 size() 函数获取文件大小并输出到控制台。
QT5.9.12 如何把一个中文,英文混合字符串输出到一个二进制文件里,要用Unicode ,英文为1byte, 中文为2byte,文件大小固定为1024byte,不够字节数补0,要求要用QTextStream方法,
可以使用以下代码将混合字符串输出到二进制文件:
```
#include <QFile>
#include <QTextStream>
void writeStringToBinaryFile(const QString& str, const QString& fileName)
{
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly))
return;
// 字符串转为 Unicode 编码
QByteArray data = str.toUtf8();
// 计算需要写入的字节数
int bytesToWrite = qMin(data.size(), 1024);
// 填充字节数
if (bytesToWrite < 1024)
data = data.leftJustified(1024, '\0');
// 写入数据
QTextStream out(&file);
out.setCodec("UTF-16LE"); // 设置 Unicode 编码
for (int i = 0; i < bytesToWrite; i += 2)
{
ushort ch = (static_cast<uchar>(data.at(i + 1)) << 8) | static_cast<uchar>(data.at(i));
out << ch;
}
file.close();
}
```
使用方法:
```
QString str = "中文English";
writeStringToBinaryFile(str, "test.bin");
```
这段代码将会把字符串"中文English"写入到文件"test.bin"中,文件大小为1024字节,其中中文字符占用2个字节,英文字符占用1个字节。如果字符串长度不足1024字节,则会在末尾用'\0'补齐。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)