Я хочу сказать strtok()
, чтобы использовать в качестве разделителей все, кроме буквенно-цифровых символов.Разбор слов с strtok
Моих попыток являются примером ref:
/* strtok example */
#include <stdio.h>
#include <string.h>
int main()
{
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, " ,.-");
}
return 0;
}
Однако я собираюсь разобрать реальные текстовые файлы (которые содержат обзоры на сайт). В настоящее время я проверяю, что происходит с другими дериметрами, и увеличиваю второй аргумент strtok()
. Например, я видел [
, поэтому я сделал это " ,.-["
и так далее, но ОК, я мог бы что-то пропустить, и, возможно, новый текстовый файл содержит новый делиметр.
Не могу ли я сделать что-то умнее (и на самом деле правильно, потому что это не так)?
Например, если я получаю:
[Hello_sir I'm George]
Я хотел бы получить эти маркеры:
Hello
sir
I
m
George
Проблема заключается в том, что я не знаю, которые являются разделители.
Я хотел бы сказать, что использование в качестве разделителей всего, кроме буквенно-цифровых символов.
EDIT
Я думал идти посимвольна и проверить, если это буквенно-цифровое, но я надеялся на что-то встроенное, как кормление желаемой strtok()
.
может быть, вы можете просто использовать 'isalpha' полукокса по полукокса ? http://www.cplusplus.com/reference/cctype/isalpha/ – user2485710
О да, я тоже об этом подумал, позвольте мне обновить @ user2485710 – gsamaras
http://stackoverflow.com/a/26243667/971127 Сделать, потому что нет , – BLUEPIXY