2009-08-12 2 views
0

Каков наилучший способ получить эту информацию из файла для каждой строки?Получить информацию о файле в переменных?

текстовый файл выглядит следующим образом

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

Поэтому мне нужно, чтобы получить информацию от линии 1 (1 E) поставить 1 в переменную, а затем Е в другую. То же самое для остальных строк, но некоторые из них имеют различное количество элементов, которые я не понимаю, как это сделать.

+0

Чтобы оказать вам разумную помощь, нам необходимо знать значения чисел и букв в файле. Поскольку записи различаются по длине, это не может быть просто общий процесс, который не зависит от значения данных. –

+2

Похоже, домашнее задание. –

+0

ваше наблюдение примерно так же хорошо, как ваш ответ –

ответ

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

Я просто надеюсь, что это не домашнее задание. Cuz, я действительно заслуживаю нисходящего движения, если это так. – AraK

+0

Nice one: использование строки в строке. +1 – xtofl

Смежные вопросы