C++:从文本文件中读取并分离成可变

问题描述:

我有这样一个文本文件:C++:从文本文件中读取并分离成可变

John 20 30 40 
mike 30 20 10 

如何从文本文件中读取并把它们分成变量名,VAR1,VAR2,VAR3。 这是我的尝试,似乎没有用。请帮助。

#include <iostream> 
#include <fstream> 
#include <string> 
#include <sstream> 
using namespace std; 

int main() { 
    string name,result; 
    int number1; 
    ifstream myfile ("marks.txt"); 
    if (myfile.is_open()) 
    { 
    while (!myfile.eof()) 
    { 
     getline (myfile,name,'\t'); 
     getline (myfile,var1,'\t'); 
     getline (myfile,var2,'\t'); 
     getline (myfile,var3,'\t'); 
     cout << name << var1 << var2 << var3; 


    } 

    myfile.close(); 

    } 

    else cout << "Unable to open file"; 

    return 0; 
} 

EDIT 1:

夜曲建议:

#include <iostream> 
#include <fstream> 
#include <sstream> 
using namespace std; 


int main() 
{ 
    ifstream inputFile("marks.txt"); 
    string line; 

    while (getline(inputFile, line)) 
    { 
     istringstream ss(line); 

     string name; 
     int var1, var2, var3; 

     ss >> name >> var1 >> var2 >> var3; 
     cout << name << var1 << var2 << var3 << endl << endl; 
    } 
} 

输出:

John203040 

mike302010 

302010 

为什么另一个302010 ???

+0

您的输入文件是否以制表符分隔?你会得到什么输出? – 2010-10-15 22:33:15

+0

是的。其制表符分隔。 “ – diehell 2010-10-15 22:38:44

+0

”似乎不起作用“没有帮助。请详细说明。 – JoshD 2010-10-15 22:41:12

像这样的东西应该工作(我没有编译器方便,所以你可能需要调整这一点):

#include <iostream> 
#include <sstream> 
using namespace std; 


int main() 
{ 
    ifstream inputFile("marks.txt"); 
    string line; 

    while (getline(inputFile, line)) 
    { 
     istringstream ss(line); 

     string name; 
     int var1, var2, var3; 

     ss >> name >> var1 >> var2 >> var3; 
    } 
} 

编辑:刚才又见到了这一点,我不知道为什么我之前选择了get line方法。以下(更简单的解决方案)不起作用吗?

#include <fstream> 
using namespace std; 

int main() 
{ 
    ifstream fin(“marks.txt”); 

    string name; 
    int var1; 
    int var2; 
    int var3; 

    while (fin >> name >> var1 >> var2 >> var3) 
    { 
     /* do something with name, var1 etc. */ 
     cout << name << var1 << var2 << var3 << “\n”; 
    } 
} 
+0

夜曲,你的工作很好。我添加了#include 和cout diehell 2010-10-15 22:58:06

+0

您的文件末尾必须有空行。 – PlagueHammer 2010-10-15 23:19:19

+0

谢谢夜曲! – diehell 2010-10-15 23:33:21

看起来您需要声明var1,var2和var3。

而且不是这样的:

 getline (myfile,name,'\t'); 
     getline (myfile,var1,'\t'); 
     getline (myfile,var2,'\t'); 
     getline (myfile,var3,'\t'); 

试试这个:

myfile >> name; 
    myfile >> var1; 
    myfile >> var2; 
    myfile >> var3; 

不是因为你有什么是错的,但第二个是清洁,将处理所有的空白。