2013-07-19 96 views
0

所以我很堅持努力想通對阻止我我的顯示程序的文本程序這個bug ..C++顯示一個文本文件......(「回聲」的文本文件)

#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 

而且我現在需要我用上面的代碼來獲得從文件信息從文件中獲取數據...

+1

我通過這個

#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()函數來讀取和顯示文件'非常確定'std :: cout << infile.rdbuf();'會做到這一點。 – chris

+2

這是功課嗎? – jwiscarson

+0

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

回答

0

我個人使用stringstr讀取一行的時間和解析它EAMS:

例如:

#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

但我想顯示該文件..然後顯示上面提供的內容...感謝您的簡化... – Cris

1

循環可能是你能做的最好的事情。 所以如果你知道的格式,你可以簡單地做這樣的說法

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

但哪部分將顯示文件?我想知道哪個部分會顯示文件... – Cris

+0

我用評論更新了它,以便您更好地理解它。基本上,假設你知道你正在閱讀的文件中的數據格式(例如,每行有2個值),你可以通過將數據分割成像這樣的塊來輕鬆解析它。數據流中的數據將被讀取,直到達到值之間的空間,所以您唯一需要做的就是確保數據的格式一致 – mewa