2013-07-19 3 views
0

Je suis vraiment coincé essayer de figurée ce bug sur le programme qui me empêche d'afficher le texte de mon programme ..C++ Affichage d'un fichier texte ... (« Echo », un fichier texte)

#include <iostream> 
#include <iomanip> 
#include <fstream> 
#include <sstream> 
#include <string> 
#include <stdio.h> 
using namespace std; 

int main() 
{ 
ifstream infile; 
ofstream offile; 

char text[1024]; 
cout <<"Please enter the name of the file: \n"; 
cin >> text; 

infile.open(text); 

string scores; // this lines... 

getline(infile, scores, '\0'); // is what I'm using... 

cout << scores << endl; // to display the file... 

string name1; 
int name2; 
string name3; 
int name4; 
infile >> name1; 
infile >> name2; 
infile >> name3; 
infile >> name4; 

cout << "these two individual with their age add are" << name2 + name4 <<endl; 

// 23 + 27 

//the result I get is a bunch of numbers... 

return 0; 

} 

y at-il plus propre manière ou d'une méthode simple que je peux utiliser pour afficher le fichier?

Toute la méthode Internet sont difficiles à comprendre ou à suivre en raison de le fichier est ouvert dans la boucle ..

Je veux un programme que vous tapez le nom du fichier et affiche le fichier la le fichier contiendra les éléments suivants ...

jack 23 
smith 27 

J'ai aussi besoin d'obtenir des données à partir du fichier maintenant je suis en utilisant le code ci-dessus pour obtenir ces informations à partir du fichier ...

+1

I suis assez sûr 'std :: cout << infile.rdbuf();' le fera. – chris

+2

Est-ce que ce sont les devoirs? – jwiscarson

+0

std :: cout << infile.rdbuf(); – Cris

Répondre

0

J'utilise personnellement stringstr SEGO pour lire une ligne à la fois et l'analyser:

Par exemple:

boucle
#include <fstream> 
#include <stringstream> 
#include <string> 

std::string filename; 

// Get name of your file 
std::cout << "Enter the name of your file "; 
std::cin >> filename; 

// Open it 
std::ifstream infs(filename); 
std::string line; 

getline(infs, line); 

while(infs.good()) { 
    std::istringstream lineStream(line); 
    std::string name; 
    int age; 
    lineStream >> name >> age; 
    std::cout << "Name = " << name << " age = " << age << std::endl; 

    getline(infs, line); 
} 
+0

mais je veux afficher le fichier .. puis afficher ce que vous avez fourni ci-dessus ... merci pour la simplifier ... – Cris

1

est probablement la meilleure chose que vous pouvez faire. donc si vous connaissez le format vous pouvez simplement le faire comme ça

#include <iostream> 
#include <fstream> 
using namespace std; 
int printParsedFile(string fileName) { // declaration of a function that reads from file passed as argument 
    fstream f;  // file stream 
    f.open(fileName.c_str(), ios_base::in);  // open file for reading 
    if (f.good()) {  // check if the file can be read 
     string tmp;  // temp variable we will use for getting chunked data 
     while(!f.eof()) {  // read data until the end of file is reached 
      f >> tmp;  // get first chunk of data 
      cout << tmp << "\t";  // and print it to the console 
      f >> tmp;  // get another chunk 
      cout << tmp << endl;  // and print it as well 

    } else { 
     return -1; // failed to open the file 
    } 
    return 0; // file opened and read successfully 
} 

vous pouvez appeler alors cette fonction par exemple dans votre fonction principale() pour lire et le fichier d'affichage passé comme argument

int main(int argc, char** argv) { 
    string file; 
    cout << "enter name of the file to read from: " 
    cin >> file; 
    printParsedFile(file); 
    return 0; 
} 
+0

mais quelle section affichera le fichier ?? Je veux savoir quelle section affichera le fichier ... – Cris

+0

Je l'ai mis à jour avec des commentaires afin que vous puissiez mieux le comprendre. Fondamentalement, en supposant que vous connaissiez le format des données dans le fichier que vous lisez (par exemple, 2 valeurs par ligne), vous pouvez facilement analyser en divisant les données en morceaux comme ceux-ci. les données du flux seront lues jusqu'à ce qu'un espace entre les valeurs soit atteint, ainsi la seule chose que vous devez réellement faire est de vous assurer que le format des données est cohérent – mewa