Как использовать stringstream для разделения строк, разделенных запятыми [дубликат]
этот вопрос уже есть ответ здесь:
Как я могу перебирать слова строки? [закрытый]
74 ответы
у меня есть следующий код:
std::string str = "abc def,ghi";
std::stringstream ss(str);
string token;
while (ss >> token)
{
printf("%sn", token.c_str());
}
выход:
abc
def, ghi
Так stringstream::>> оператор может разделять строки пробелом, но не через запятую. Есть ли возможность изменить код выше, так что я могу получить следующий результат?
input: "abc, def, ghi"
выход:
abc
def
ги
3 ответов:
#include <iostream> #include <sstream> std::string input = "abc,def,ghi"; std::istringstream ss(input); std::string token; while(std::getline(ss, token, ',')) { std::cout << token << '\n'; }abc
def
ги
#include <iostream> #include <string> #include <sstream> 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 <<endl; }
Comments