2009-11-25 6 views
3

J'essaye d'écrire une fonction de modèle qui extraira la valeur du type de donnée donné de la chaîne donnée. Je suis venu avec quelque chose comme ceci:Comment utiliser std :: wstring avec std :: istringstream?

template<class T> 
    static T getValue(const CString& val_in) 
    { 
     std::wstring value = val_in; 
     std::istringstream iss; 
     iss.str(value); 

     T val = T(); 
     iss>>val; 
     return val; 
    } 

Mais cela donne l'erreur suivante pour l'instruction iss.str(value).

erreur C2664: 'vide std :: basic_istringstream < _Elem, _Traits, _Alloc> :: str (const std :: basic_string < _Elem, _Traits, _Ax> &)': ne peut pas convertir le paramètre 1 de 'std :: wstring' à 'const std :: basic_string < _Elem, _Traits, _Ax> &'

donc, fondamentalement, est std::istringstream seulementacceptent dix . Je pensais qu'il pourrait y avoir un std::wistringstream mais il ne semble pas en avoir un disponible. Des indices comment puis-je le faire?

+0

Qu'est-ce qui vous fait penser qu'il n'y a pas un 'wistringstream' disponible? Voir 27.7 [lib.string.streams]. –

+0

@Charles, j'ai eu une erreur de compilation (sur VC9) quand j'ai essayé wistringstream, laissez-moi essayer encore. – Naveen

+0

Oups.compilation maintenant, pas sûr de ce que j'ai changé autre que celui-ci .. – Naveen

Répondre

5

Mon compilateur a wistringstream - c'est tout ce qu'il est:

typedef basic_istringstream<wchar_t> wistringstream;

+0

oui, il est là .. Je pense qu'il y avait une erreur ailleurs et je me suis trompé. – Naveen

Questions connexes