lecture d'un istringstream , recuperer l'erreur

lecture d'un istringstream , recuperer l'erreur - C++ - Programmation

Marsh Posté le 23-11-2012 à 12:54:09    

Bonjour
Débutant en c++
Pourquoi mon string ne peut etre lu? Comment je fais un try et catch pour recuperer l'erreur de c++ et non pas mon message perso?
 

Citation :


string TATA::filterOutput(const std::string fullOutput)
{
     istringstream ist(fullOutput);
     if( !ist ) throw runtime_error(str(_fmt("Can't output : \n%s" ) % fullOutput ))
 


 
Resultat  : Can't output kjdfjddf ..> ..
 
Merci

Reply

Marsh Posté le 23-11-2012 à 12:54:09   

Reply

Marsh Posté le 23-11-2012 à 14:10:03    

Si tu fais:
istringstream ist;
ist.str(fullOutput);
tu dois pouvoir tester l'état du stream avec ist.rdstate(), non?
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 28-12-2012 à 22:01:33    

Lapin.
 
Avec ce petit programme suivant, même en y carrant du /dev/random, impossible de rencontrer un cas ou un istringstream nouvellement initialisé ne serait pas bon d'office.
 

Code :
  1. #include <sstream>
  2. #include <string>
  3. #include <iostream>
  4. #include <iterator>
  5. namespace
  6. {
  7.   std::string read_all(std::istream &in)
  8.   {
  9.     std::ostringstream buf;
  10.     buf << in.rdbuf();
  11.     return buf.str();
  12.   }
  13. }
  14. int main()
  15. {
  16.   std::string content = read_all(std::cin);
  17.   std::istringstream input(content);
  18.   if (!input) {
  19.     std::cerr << "Bad input!\n" << content;
  20.     return 1;
  21.   }
  22.   else {
  23.     typedef std::istream_iterator<std::string> In;
  24.     typedef std::ostream_iterator<std::string> Out;
  25.     std::copy(In(input), In(), Out(std::cout, ", " ));
  26.     std::cout << '\n';
  27.   }
  28. }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed