inlezen file(s) die uit string en double bestaat

Status
Niet open voor verdere reacties.

sofoul

Nieuwe gebruiker
Lid geworden
18 feb 2008
Berichten
2
Hoi,

Ik heb een tekstbestand met producten staan en de aantal dat vervangen moet worden en een tekstbestand met dezelfde producten en de prijs van het product. Bijvoorbeeld:
text1.txt -> Milk: 15.00
Butter: 20.00

text2.txt -> Milk: 0.99
Butter: 1.15

Ik heb voor de zekerheid de testfiles maar simpel gehouden.

Nu heb ik een code geschreven om de eerste bestand in te lezen en de data in het bestand te lezen en op het scherm te printen.
Code:
 #include <iostream>
#include <cstdlib>
#include <fstream>
using namespace std;

int main() {
  char name;
  double amount;
  ifstream ins1; //open text1.txt for input
  ifstream ins2; //open text2.txt for input

  ins1.open ("test1.txt"); //opens file, exit if fail
  if(ins1.fail()) { //if opening fails then end program
    cout << "Input file opening failed." << endl;
    exit(1); //exit function form cstdlib library
  }

  if(ins1.is_open()) {
    while(! ins1.eof()) {
      //getline(ins,line);
      //cout << line << endl;
      name=ins1.get();
      ins1.ignore(256, ':');
      amount=ins1.get();
      cout << "Name: " << name << "\tAmount: " << amount << endl;
    }
  ins1.close();
  }
  else cout << "Unable to open file";
  return 0;
}

Alleen is de output op het scherm niet wat ik wil. Hij leest alleen de eerste character van de product en het aantal klopt ook niet.
Dit is de output:
Code:
Name: M Amount: 32
Name: 1 Amount:32
Name: 2 Amount: -1

Wie kan me helpen?
 
inderdaad werkt char alleen met enkele (constante) characters. Oplossing: char* (maar er een pointer van en laat deze verwijzen naar het beginpunt van de c-string), of (in c++ een betere oplossing) werk met de string class.

Dit zijn de opties dus;
Code:
char* name;
string name //voor geavanceerde bewerkingen: eerst #include <string>
 
Probeer gij eens een groot getal in te lezen(88888.87)?
Zou die bij uw code ook afronden?
Groetjes
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan