2009-08-12 59 views
0

从每行的文件中获取此信息的最佳方式是什么?获取文件信息到变量?

文本文件看起来像这样

1 E 
1 P 
1 C 
2 E a 
5 E P C 

所以我需要从1号线(1 E)的信息把1变成一个变量,则E到另一个。对于其余的线条也是如此,但有些具有不同数量的元素,我不知道该如何去做。

+0

为了给你任何合理的帮助,我们需要知道文件中数字和字母的含义。由于记录的长度不同,它不能只是一个与数据含义无关的通用过程。 – 2009-08-12 14:00:38

+2

看起来像功课。 – 2009-08-12 14:02:03

+0

你的观察与你的回答差不多 – 2009-08-12 14:06:20

回答

1

你可能需要一个向量向量。

std::vector<std::vector<std::string> > info; 

内载体包含在一条线上

外载体包含每一行每一字。

读取文件中的每一行,tokenise行,每个标记添加到内向量,对于单词添加矢量到矢量的每一行

听起来像一个家庭作业问题,所以我不打算发布显示如何读取文件的代码,或标记字符串

0

您可以使用filestream >> intvariable;读取该行开头的整数。然后,您可以使用getline将该行的其余部分读入一个字符串,然后将其拆分成一个数组或执行其他任何您想要的操作。你对于你想要做什么不是很具体。

1

快速/肮脏的解决方案。

#include <fstream> 
#include <vector> 
#include <string> 
#include <sstream> 

int main() 
{ 
    using namespace std; 

    typedef pair<size_t, vector<string> > infoPair; 
    typedef vector<infoPair > infoVector; 

    ifstream inputFile("test.txt"); 
    size_t lineNumber = 1; 
    infoVector info; 
    string line; 

    while(getline(inputFile, line)) 
    { 
     stringstream extractor(line); 
     vector<string> symbols; 
     string symbol; 

     while(extractor >> symbol) 
     { 
      symbols.push_back(symbol); 
     } 

     info.push_back(infoPair(lineNumber, symbols)); 
     lineNumber++; 
    } 

    return 0; 
} 
+1

我只是希望它不是作业。因为,如果真是这样,我真的应该得到一个倒下的机会。 – AraK 2009-08-12 14:14:53

+0

不错的一个:每行使用一个stringstream。 +1 – xtofl 2009-08-12 15:09:03