você pode dizer iostreams quais caracteres para tratar como espaços em branco?
Pergunta
Assim que você poderia fazer algo assim, por exemplo:
std::string a("01:22:42.18");
std::stringstream ss(a);
int h, m, s, f;
ss >> h >> m >> s >> f;
que normalmente requer a string a ser formatado "01 22 42 18"
.
você pode modificar o idioma corrente diretamente para fazer isso?
Outras dicas
Eu não acho que você pode mudar o delimitador padrão sem criar um novo local, mas que parece hackish. O que você pode usar fazer é usar getline com um terceiro parâmetro especificando o delimitador personagem ou você pode ler os delimitadores e não fazer nada com eles (por exemplo, ss >> h >> d >> m >> d >> s >> d >> f).
Você também pode escrever sua própria classe de análise que cordas alças divisão para você. Ou ainda melhor, use boost :: divisão Cordas Algoritmos Biblioteca Boost .
Você pode fazer isso através da criação de uma localidade com uma faceta ctype classificar :
como espaços em branco.
char c;
if (!(ss >> h >> c) || c != ':') return;
if (!(ss >> m >> c) || c != ':') return;
if (!(ss >> s >> c) || c != '.') return;
if (!(ss >> f) || ss >> c) return;