функция разбиения для C ++ - PullRequest
       7

функция разбиения для C ++

4 голосов
/ 28 сентября 2011

Есть ли функция разделения типа для C ++, аналогичная Java?Я знаю, игнорировать, но я не совсем понимаю, и как это будет работать для моего случая.

Мой ввод:

{
  item = ball
  book = lord of the rings
  movie = star wars
}

Мой ввод <attribute> = <value> и я должен хранить их в разных строках или целых числах (в зависимости от значения, например, если это число, используйте целое число).

Ответы [ 2 ]

5 голосов
/ 28 сентября 2011

Используйте Boost :: tokenizer , так как он делает то, что вы хотите сделать. Из руководства:

// simple_example_1.cpp
#include<iostream>
#include<boost/tokenizer.hpp>
#include<string>

int main(){
   using namespace std;
   using namespace boost;
   string s = "This is,  a test";
   tokenizer<> tok(s);
   for(tokenizer<>::iterator beg=tok.begin(); beg!=tok.end();++beg){
       cout << *beg << "\n";
   }
}
0 голосов
/ 28 сентября 2011

Используйте strtok (): http://www.cplusplus.com/reference/clibrary/cstring/strtok/.

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

и РЕДАКТИРОВАТЬ:

Это очень классное SO-решение, которое будет разбивать всю строку на пробелы - вам придется обрабатывать значения обратно вместе после =, но это хорошо научит вас STL:)

Разделить строку в C ++?

...