QTextStream 类是 Qt 中用于文本输入输出的类,通常用于读取和写入文本数据。它不直接支持 std::setw() 这种方式来设置字段宽度,因为 std::setw() 是 C++ 标准库 头文件中的一部分,主要用于 std::ostream 类及其派生类。
不过,你仍然可以在使用 QTextStream 输出文本时手动添加空格来实现类似的效果。
#include <QCoreApplication>
#include <QTextStream>
#include <QFile>
#include <QRandomGenerator>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 创建一个字符串作为输出目标
QFile * file = new QFile("D:\\Data\\Desktop\\test\\1\\test.txt");
if(file->open(QFile::WriteOnly))
{
// 使用字符串创建 QTextStream
QTextStream out(file);
out << QString("%1").arg("i", 8)
<< QString("%1").arg("randomDouble", 15)
<< QString("%1").arg("randomDouble", 15)
<< endl;
for (int i = 6 ; i < 15; i++) {
// 生成 10 位小数以内的随机小数
double randomDouble = QRandomGenerator::global()->generateDouble();
randomDouble = round(randomDouble * 1e10) / 1e10;
out << QString("%1").arg(i, 8)
<< QString("%1").arg(randomDouble, 15)
<< QString("%1").arg(randomDouble, 15)
<< QString("%1").arg(randomDouble, 15)
<< QString("%1").arg(randomDouble, 15)
<< endl;
}
}
return a.exec();
}
QString::arg() 函数用于格式化输出。第一个参数是要格式化的值,
第二个参数是字段宽度,用于指定输出的最小宽度。如果值的宽度小于指定的字段宽度,则会在左侧填充空格以达到指定的宽度。
上面的代码可以实现文本输出右对齐的效果,但通常我们希望在文本中实现左对齐的效果,可以改变参数实现。
//将参数改为负数,就可以实现左对齐的效果,占多少位,根据实际情况设置
QString("%1").arg(randomDouble, -15);