我有问题。 我想将Ints和Floats写入文本文件,但是当我尝试这样做时,它就没有工作。 当我尝试它时,我在我的文本文件中得到%d。这是我的代码的一部分。
void controleformules::on_pushButton_4_clicked()
{
QString str= ui->textEdit_2->toPlainText();
QString filename= str+".txt";
QFile file( filename );
if ( file.open(QIODevice::ReadWrite) )
{
QTextStream stream( &file );
stream << "U heeft nu deze 2 formules gekozen:
Formule 1: %dx + %dy = %0.1f.
Formule 2: %dx + %dy = %d", x1Int, y1Int, r1Int, x2Int, y2Int, r2Int;
stream << "eerst moet je in beide formules de x of de y elimeneren, wij doen de y eerst";
}
}
我希望你能帮助我 Tim Smits
答案 0 :(得分:3)
C ++流不适用于printf
之类的格式字符串。要么使用 printf:
sprintf(buffer, "U heeft nu deze 2 formules gekozen: "
"Formule 1: %dx + %dy = %0.1f. "
"Formule 2: %dx + %dy = %d",
x1Int, y1Int, r1Int, x2Int, y2Int, r2Int);
stream << buffer;
或单独留住溪流:
stream << "U heeft nu deze 2 formules gekozen: Formule 1: "
<< x1Int << "x + " << y1Int << "y = " << r1Int << ". Formule 2: "
<< x2Int << "x + " << y2Int << "y = " << r2Int;
有一个浮点格式%0.1f
有点奇怪,但与之匹配的变量称为r1Int
。注意未定义的行为。
答案 1 :(得分:3)
C ++中有两个不同的文本系统。一个是iostreams,它使用插入器:
int n = 3;
std::cout << "This is a number: " << n << '\n';
另一个是printf
及其亲属;他们来自C:
int n = 3;
printf("This is a number: %d\n", n);
答案 2 :(得分:1)
我不熟悉QTextStream,但这是获取所需内容的完整格式化源。
stream << ("U heeft nu deze 2 formules gekozen: Formule 1: " << x1Int << " + " << y1Int << " = " << r1Int << ". Formule 2: " << x2Int << " + " << y2Int << " = " r2Int);
这样比较麻烦,但它会为您提供所需的格式。
答案 3 :(得分:1)
您可以通过使用sprintf
的方式混合使用流的方式。他们是不同的。
使用流,您不使用%d
之类的占位符 - 只需在要插入的位置插入值即可。像这样:
stream
<< "U heeft nu deze 2 formules gekozen: Formule 1: "
<< x1Int
<< " + "
<< y1Int
<< " = "
<< r1Int
<< "."
<< y2Int
<< " Formule 2: ";
..等等。