Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++ stl]string e vector

    ciao,
    Ho una stringa stl con una serie di nomi di file:

    "pippo.jpg pluto.jpg paperino.jpg"

    è possibile inserire questi tre file in un vector<std::string> come tre elementi?
    qual è il metodo migliore ?
    ho letto che la stringa stl è per certi versi simile a un vector , è per questo che lo chiedo.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    21
    Se ho ben capito, potresti dividere la tua stringa tramite strtok, e porre ogni striga in una posizione diversa del vector.

  3. #3
    Il metodo più semplice è usare un istringstream:
    codice:
    std::string nomiFile="pippo.jpg pluto.jpg paperino.jpg";
    std::vector vettore;
    std::string out;
    std::istringstream is(nomiFile)
    while(is>>out)
        vettore.push_back(out);
    Occhio però che i nomi dei file possono anche contenere spazi, per cui o ti attrezzi in modo che la stringa abbia un altro delimitatore, oppure ti devi inventare un parser più complesso (ad esempio se devi supportare nomi di file racchiusi tra virgolette).
    Originariamente inviato da KolDeath
    Se ho ben capito, potresti dividere la tua stringa tramite strtok, e porre ogni striga in una posizione diversa del vector.
    Non puoi usare la strtok direttamente su una std::string, dato che l'unico modo per ottenere un stringa C da una std::string è il metodo c_str(), ma questa restituisce una const char *, e strtok modifica (distrugge) la stringa su cui lavora.
    (in realtà forse si può ottenere anche tramite l'operatore [], ma anche in questo caso modificare "a tradimento" il buffer interno della std::string non è una buona idea)
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.