Несколько разделителей

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

years,(7),(9)
years,(8),(3)

какие методы я могу использовать, чтобы отделить их как

years
7
9
years
8
3

Я пытался использовать штрих, но я ничего не отображается со следующим.

getline (myfile,line, ',' );
line = strtok (pch," (),");

я получил этот пример от http://www.cplusplus.com/reference/clibrary/cstring/strtok/

0

Решение

Это похоже на работу для станд :: локаль и его верный помощник насыщать:

#include <locale>
#include <iostream>struct punct_ctype : std::ctype<char> {
punct_ctype() : std::ctype<char>(get_table()) {}
static mask const* get_table()
{
static mask rc[table_size];
rc[' '] = std::ctype_base::space;
rc['\n'] = std::ctype_base::space;
rc['('] = std::ctype_base::space;
rc[')'] = std::ctype_base::space;
rc[','] = std::ctype_base::space;
return &rc[0];
}
};

int main() {
using std::string;
using std::cin;
using std::locale;

cin.imbue(locale(cin.getloc(), new punct_ctype));

string word;
while(cin >> word) {
std::cout << word << "\n";
}
}
2

Другие решения

Вы не использовали strtok право:

char str[] ="- This, a sample string.";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str," ,.-");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ,.-");
}

Увидеть http://www.cplusplus.com/reference/clibrary/cstring/strtok/ для дополнительной информации.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector