写Ints,浮动到文本文件

时间:2013-06-12 17:41:48

标签: c++

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

4 个答案:

答案 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: ";

..等等。