2013-06-12 70 views
1

我遇到問題。 我想將Ints和Floats寫入文本文件,但是當我嘗試這樣做時,它不會奏效。 當我嘗試它時,我在我的文本文件中獲得了%d。這是我的代碼的一部分。寫入Ints,浮動到文本文件

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"; 

    } 
} 

我希望你能幫助我 蒂姆·史密茨

+0

什麼是'x1Int','y1int'等? –

+0

那些是花花公子和Ints,對不起我不好說不。 – user2479441

回答

3

在C++中有兩個截然不同的文本系統。一個是輸入輸出流,它使用插頁:

int n = 3; 
std::cout << "This is a number: " << n << '\n'; 

另一種是printf及其親屬;他們來自C:

int n = 3; 
printf("This is a number: %d\n", n); 
+0

謝謝你們的快速回應:),它現在有效。 – user2479441

+0

我還有一個問題, 當我想添加一箇中斷時,<<「\ n」不起作用。 我希望你能幫助我。 – user2479441

+0

@ user2479441 - 您應該發佈一個新問題,附帶實際代碼,並說明您期望它做什麼以及做什麼。 –

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。小心未定義的行爲。

+0

謝謝你們的快速回應:),它現在可以工作。 – user2479441

1

我不熟悉QTextStream,但這是完整的格式源來獲得你想要的。

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

這是更麻煩的,但它會讓你格式化你想要的。

+0

謝謝你們的快速回應:),它現在有效。 – user2479441

1

您可以混合使用流的方式和您使用的方式sprintf。他們是不同的。

對於流,您不使用像%d這樣的佔位符 - 只需在要插入的位置插入值即可。像這樣:

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

..等等。

+0

謝謝你們的快速回應:),它現在有效。 – user2479441