Come si fa a variabili di uscita dichiarato come un doppio in un file di testo in C ++

StackOverflow https://stackoverflow.com/questions/1378364

  •  21-09-2019
  •  | 
  •  

Domanda

Sono molto nuovo per C ++ e mi chiedo come è uscita / scrivere variabili dichiarate come doppio in un file txt. Io so su come stringhe di output utilizzando fstream ma non posso capire come inviare qualsiasi altra cosa. Sto iniziando a pensare che non è possibile inviare qualsiasi cosa, ma le stringhe di un file di testo è corretto? Se è così allora come è possibile convertire le informazioni memorizzate nella variabile ad una variabile stringa?

Ecco il mio codice che sto cercando di implementare questo concetto in, suo abbastanza semplice:

int main()
{

double invoiceAmt = 3800.00;
double apr = 18.5;            //percentage

//compute cash discount
double discountRate = 3.0;    //percentage
double discountAmt;

discountAmt = invoiceAmt * discountRate/100;

//compute amount due in 10 days
double amtDueIn10;

amtDueIn10 = invoiceAmt - discountAmt;

//Compute Interest on the loan of amount (with discount)for 20 days
double LoanInt;

LoanInt = amtDueIn10 * (apr /360/100) * 20;

//Compute amount due in 20 days at 18.5%.
double amtDueIn20;

amtDueIn20 = invoiceAmt * (1 + (apr /360/100) * 20);
return 0;
}

Quindi quello che sto cercando di fare è usare queste variabili e le loro output al file di testo. Inoltre si prega di informarmi sul comprende che ho bisogno di utilizzare per questo codice sorgente. Sentitevi liberi di dare suggerimenti su come migliorare il mio codice in altri modi per favore.

Grazie in anticipo.

È stato utile?

Soluzione

Come suggerisce il vostro tagging, si utilizza flussi di file:

std::ofstream ofs("/path/to/file.txt");
ofs << amtDueIn20;

A seconda di ciò che è necessario per il file, probabilmente dovrete scrivere più cose (come spazi bianchi, ecc) al fine di ottenere la formattazione decente.

Modifica a causa di problemi in corso di rmagoteaux22:

Questo codice

#include <iostream>
#include <fstream>

const double d = 3.1415926;

int main(){
    std::ofstream ofs("test.txt");
    if( !ofs.good() ) {
        std::cerr << "Couldn't open text file!\n";
        return 1;
    }
    ofs << d << '\n';
    return 0;
}

compila per me (VC9) e scrive questo per test.txt:

3.14159

Si può provare questo?

Altri suggerimenti

È sufficiente utilizzare l'operatore operatore di flusso di scrittura << che ha una definizione di sovraccarico per il doppio (definito in basic_ostream)

#include <fstream>

...


    std::fstream stmMyStream( "c:\\tmp\\teststm.txt", std::ios::in | std::ios::out | std::ios::trunc );

    double dbMyDouble = 23.456;
    stmMyStream << "The value is: " << dbMyDouble;

Per rispondere alla tua prima domanda, in C si utilizza printf (e per fprintf file di output). IIRC, cout ha un gran numero di modificatori anche, ma non voglio parlare di loro come originariamente citato fstream (più centric 'C' di C ++) -


oops, perse l'indicatore ofstream, ignorare i miei commenti 'C' e utilizzare C ++


per migliorare il programma, assicurarsi di utilizzare parentesi molto quando effettuare i calcoli di cui sopra per essere al 100% sicuro che le cose sono valutati nel modo desiderato loro di essere (non fare affidamento su ordine di precedenza)

metodi per scrivere ad un'uscita generale sono printf, wprintf ecc

In caso di file, questi metodi si chiamano come fprintf_s, fsprintf_s ecc

Si noti che i metodi dei '_S' sono le nuove varianti sicure di metodi di formattazione precedenti. Si dovrebbe sempre usare queste nuove versioni sicure.

Per gli esempi si riferiscono a: http://msdn.microsoft.com/en- us / library / ksf1fzyy% 28VS.80% 29.aspx

Si noti questi metodi utilizzano un identificatore di formato per convertire un determinato tipo di testo. Ad esempio% d funge da supporto luogo per intero. Allo stesso modo% f per il doppio.

Basta usare l'operatore << su un flusso di output:

#include <fstream>

int main() {
  double myNumber = 42.5;
  std::fstream outfile("test.txt", std::fstream::out);
  outfile << "The answer is almost " << myNumber << std::endl;
  outfile.close();
}

ho avuto lo stesso identico problema, in cui è stato ofstream output stringhe, ma si fermò non appena ha raggiunto una variabile. Con un po 'più Googling ho trovato questa soluzione in un post sul forum:

In Xcode 3.2 quando si crea un nuovo progetto basato su STDC ++ modello di progetto le impostazioni di generazione di destinazione per la configurazione di debug aggiunge macro del preprocessore che sono incompatibili con gcc-4.2: _GLIBCXX_DEBUG = 1 _GLIBXX_DEBUG_PEDANTIC = 1

Distruggi loro se si vuole Debug / gcc-4.2 per eseguire correttamente.

http://forums.macrumors.com/showpost.php?p = 8590820 & postcount = 8

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top