Так что я действительно застрял, пытаясь вычислить эту ошибку в программе, которая не позволяет мне отображать текст моей программы …
#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;
}
Есть ли способ чище или простой метод, который я могу использовать для отображения файла?
Все методы в Интернете трудно понять или отслеживать из-за
файл открыт в цикле ..
Я хочу программу, которая вы вводите имя файла и отображает файл
файл будет содержать следующее …
jack 23
smith 27
Также мне нужно получить данные из файла, теперь я использую приведенный выше код для получения этой информации из файла …
цикл, вероятно, лучшее, что вы можете сделать.
так что если вы знаете формат, вы можете просто сделать это так
#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
}
Вы можете вызвать эту функцию, например, в функции main (), чтобы прочитать и отобразить файл, переданный в качестве аргумента.
int main(int argc, char** argv) {
string file;
cout << "enter name of the file to read from: "cin >> file;
printParsedFile(file);
return 0;
}
Я лично использую строковые потоки для чтения по одной строке за раз и ее анализа:
Например:
#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 );
}