2014-02-06 2 views
0

У меня есть текстовый файл ввода, который имеет разрозненную информацию о каждой строке, но мне нужно иметь возможность быстро выбрать конкретное слово из определенной строки пару сотен раз, поэтому мне нужен вектор векторных векторов.Как создать «2-мерный вектор» строк X слов из файла?

У меня есть 2 отправных точки, но я не знаю, как действовать дальше.

std::vector<std::string> lines; 
std::string line; 
while (std::getline(input, line)) { 
    if (!line.empty()) 
     lines.push_back(line); 
} 

, которая разделяет его на линии

или

std::string word; 
while (in_str >> word) { 
    input.push_back(word); 
} 

, которая разделяет его на слова

ответ

2

Вы можете объединить два подхода :-)

Сначала вы получите всю line с getline, а затем рассмотрим эту строку как источник std :: istringstream (w который по существу является обычным исходом) и разбивает входные слова на слова).

#include <iostream> 
#include <string> 
#include <vector> 
#include <sstream> 

int main(void) { 
    std::vector<std::vector<std::string> > lines; 
    std::string line; 
    while (std::getline(std::cin, line)) { 
     if (!line.empty()) { 
      std::vector<std::string> words; 
      std::string word; 
      std::istringstream is(line); 
      while (is >> word) 
       words.push_back(word); 
      lines.push_back(words); 
     } 
    } 
    std::cout << "The word at line 3, pos 2 is \"" << lines[2][1] << '"' << std::endl; 
    return 0; 
} 

, который дает мне следующее:

 
abc def gdf 
qwe asd zxc 
qaz wsx edc 
The word at line 3, pos 2 is "wsx" 
Смежные вопросы