Substring e o tanas [C++]

| Blasted |

Portugal@Home Member
Hi folks!

O problema é o seguinte:

Eu tenho uma string deste tipo:
Código:
|1|Episode #1|30/01/1987|N|5| 
[sumario] 
Sumario do episodio 1 
[/sumario]
E daqui quero tirar a primeira linha, e neste caso a parte onde diz "Sumario do episodio 1" que neste caso tem uma linha, mas pode ter mais que uma.
A primeira linha será para depois separar nos vários componentes (aqui separados com | )
Para resolver isto usei o substring da classe string e não há duvida que faz o serviço, mas a verdade é que me parece um bocado "pouco inteligente".
Através do google deparei-me com algo denominado stringstream e deu-me a impressão que talvez pudesse ser útil aqui, mas não percebi muito bem como usar ou sequer se seria efectivamente útil.

Portanto a dúvida é: é util neste caso? Como se usa? E caso não seja, existe alguma outra forma de resolver isto sem andar a fazer substrings a torto e a direito?

Cumprimentos,
 
Hi folks!

O problema é o seguinte:

Eu tenho uma string deste tipo:
Código:
|1|Episode #1|30/01/1987|N|5| 
[sumario] 
Sumario do episodio 1 
[/sumario]
E daqui quero tirar a primeira linha, e neste caso a parte onde diz "Sumario do episodio 1" que neste caso tem uma linha, mas pode ter mais que uma.
A primeira linha será para depois separar nos vários componentes (aqui separados com | )
Para resolver isto usei o substring da classe string e não há duvida que faz o serviço, mas a verdade é que me parece um bocado "pouco inteligente".
Através do google deparei-me com algo denominado stringstream e deu-me a impressão que talvez pudesse ser útil aqui, mas não percebi muito bem como usar ou sequer se seria efectivamente útil.

Portanto a dúvida é: é util neste caso? Como se usa? E caso não seja, existe alguma outra forma de resolver isto sem andar a fazer substrings a torto e a direito?

Cumprimentos,

ou arranjas algo externo pra conheceres expressões regulares ou fazem, template\função\metodo que te separe os dados, com o find fica simples

stringstream não faz o que pretendes, ou pelo menos não conheço maneira de o usar pra expressões regulares
 
É possível com o stringstream processar uma string com palavras separadas por whitespaces (espaços, \n, e outros).

Deverá ser qualquer coisa tipo isto:

Código:
string linha; //vamos imaginar que linha contem uma linha de um ficheiro de texto
vector<string> aux;
istringstream iss(linha, istringstream::in);

    while (!iss.eof())
    {
        string temp;
        iss >> temp;
        if (temp != "")
            aux.push_back(temp);
    }
No final disto aux é um vector que contem todas as palavras de linha

Não sei se isto ajuda.
 
Back
Topo