2015-02-24 3 views
-4

Имея следующий вход:C++ игнорировать или подстроить?

10/10/2013 04:59:37 PM,7.21,6000,9050.00,LT XT 

10/10/2013 10:04:14 AM,9.88,246,99946.56, 

Я использовал getline фикцию, чтобы прочитать всю строку с помощью

substr(0,2); // i am able to read 10,2013, 04 

Я не могу сделать substr от «» и далее. Я знаю, что использование функции игнорирования будет работать, есть ли способ прочитать элементы после «,» отдельно?

+1

substr (0,2) предоставит вам «10» ... Возможно, было бы проще использовать одну из функций токенизатора Boost для tokenize в пробелах и запятых. – AndyG

+0

Почему вы не увеличиваете ** Индекс **, чтобы начать с нужного символа? Подробнее о substr [здесь] (http://www.cplusplus.com/reference/string/string/substr/). –

+0

Спасибо! попробует – thronez

ответ

0

Вы можете использовать find() и substr(), чтобы разделить строку запятыми.

std::string line = "10/10/2013 10:04:14 AM,9.88,246,99946.56,"; 
std::vector<std::string> tokens; 
size_t pos = 0; 
size_t comma = line.find(",", pos); 

while (comma != std::string::npos) 
{ 
    tokens.push_back(line.substr(pos, comma - pos)); 
    pos = comma + 1; 
    comma = line.find(",", pos); 
} 
// if there is anything left in the string after the last , add it to the vector 
if (pos < line.size()) 
    tokens.push_back(line.substr(pos));