Как использовать stringstream для разделения разделенных запятыми строк
У меня есть следующий код:
std::string str = "abc def,ghi"; std::stringstream ss(str); string token; while (ss >> token) { printf("%s\n", token.c_str()); }
Выход:
азбука
DEF, GHI
Поэтому оператор stringstream::>>
может разделять строки по пробелам, но не по запятой. Есть ли способ изменить приведенный выше код, чтобы я мог получить следующий результат?
input : “abc, def, ghi”
выход :
азбука
Защита
ГХИ
- Сканер против StringTokenizer против String.Split
- Как получить токен из Lucene TokenStream?
- Ищете четкое определение того, что такое «токенизатор», «парсер» и «лексеры» и как они связаны друг с другом и используются?
- Токенизация строк в C
- Тонирование и сортировка с помощью XSLT 1.0
- Как лучше всего разбить строки csv в oracle 9i
- Преобразование разделенной запятой строки в массив в PL / SQL
- Ошибка Tokenizing: java.util.regex.PatternSyntaxException, оборванный метасимвол '*'
#include #include std::string input = "abc,def,ghi"; std::istringstream ss(input); std::string token; while(std::getline(ss, token, ',')) { std::cout << token << '\n'; }
азбука
Защита
ГХИ
#include #include #include using namespace std; int main() { std::string input = "abc,def, ghi"; std::istringstream ss(input); std::string token; size_t pos=-1; while(ss>>token) { while ((pos=token.rfind(',')) != std::string::npos) { token.erase(pos, 1); } std::cout << token << '\n'; } }
Возможно, этот код вам поможет:
stringstream ss(str);//str can be any string int integer; char ch; while(ss >> a) { ss>>ch; //flush the ',' cout<< integer <