Ответ 1
#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';
}
а
Защита
ghi
У меня есть следующий код:
std::string str = "abc def,ghi";
std::stringstream ss(str);
string token;
while (ss >> token)
{
printf("%s\n", token.c_str());
}
Вывод:
а
Защита, ГХИ
Таким образом, оператор stringstream::>>
может разделять строки по пробелам, но не по запятой. Есть ли способ изменить приведенный выше код, чтобы я мог получить следующий результат?
input: "abc, def, ghi"
Выход:
а
Защита
GHI
#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';
}
а
Защита
ghi
#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 >> integer)
{
ss>>ch; //flush the ','
cout<< integer <<endl;
}