2013-08-10 4 views
1

Из текстового файла (Range.txt),Разделитель извлечения из ряда данных

Range:1:2:3:4:5:6....:n: 

Там в список результата, но мне нужно только извлечь цифру 1 2 3 к последней цифре, но иногда последний может меняться

поэтому я читаю в файле, извлекаю разделитель и вставляю его в вектор.

ifstream myfile; 
myfile.open("Range.txt"); 

istringstream range(temp); 
getline(range, line,':'); 

test.push_back(line); 

Как получить всю ценность? У меня есть это, и он захватывает только одну цифру.

+0

Это можно сделать с помощью 'Boost.Split' или вашей собственной функции разделения. – soon

ответ

2

У меня есть это, и это только захватить одну цифру

Вы должны использовать цикл: -

while (getline(range, line, ':')) 
    test.push_back(line); 

Позже с использованием вектора вы можете обработать его, чтобы получить только целые числа ,

0

Plase, читать: Parsing and adding string to vector.

Вам просто нужно изменить разделитель (от whitespace до :).

std::ifstream infile(filename.c_str()); 
std::string line; 

if (infile.is_open()) 
{ 
    std::cout << "Well done! File opened successfully." << std::endl; 
    while (std::getline(infile, line, ':')) 
    { 
     std::istringstream iss(line); 
     std::vector<std::string> tokens{std::istream_iterator<std::string>(iss),std::istream_iterator<std::string>()}; 

     // Now, tokens vector stores all data. 
     // There is an item for each value read from the current line. 
    } 
} 
Смежные вопросы