1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Substring e o tanas [C++]

Discussão em 'Programação' iniciada por | Blasted |, 5 de Abril de 2009. (Respostas: 2; Visualizações: 671)

  1. | Blasted |

    | Blasted | [email protected] 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,
     
  2. blueomega

    blueomega Power Member

    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
     
  3. OubeLa

    OubeLa Power Member

    É 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.
     

Partilhar esta Página