1

我有个问题。我想将 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";

     }
 }

我希望你能帮助我蒂姆·斯密茨

4

4 回答 4

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。小心未定义的行为。

于 2013-06-12T17:45:36.343 回答
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);
于 2013-06-12T17:46:00.597 回答
1

我不熟悉 QTextStream,但这是获得所需内容的完整格式源。

stream << ("U heeft nu deze 2 formules gekozen: Formule 1: " << x1Int << " + " << y1Int << " = " << r1Int << ". Formule 2: " << x2Int << " + " <<  y2Int << " = " r2Int);

这比较麻烦,但它会为您提供所需的格式。

于 2013-06-12T17:45:51.153 回答
1

您将使用流的方式与使用的方式混合在一起sprintf。它们不一样。

使用流,您不需要使用占位符%d——您只需将值插入到您想要插入的位置。像这样:

stream 
  << "U heeft nu deze 2 formules gekozen: Formule 1: "
  << x1Int
  << " + " 
  << y1Int 
  << " = "
  << r1Int
  << "." 
  << y2Int
  << " Formule 2: ";

..等等。

于 2013-06-12T17:48:07.483 回答