STL (isstringstream) Compatibilité platform

STL (isstringstream) Compatibilité platform - C++ - Programmation

Marsh Posté le 04-07-2006 à 16:25:16    

Bonjour,
 
J'ai un gros problème de compatibilité multi-OS de l'utilisation de la STL.
Mon programme qui compile sur solaris tout os ne compile pas sous aix, ni linux, ni windows.
 
Notamment un problème sur la classe isstringstream, et encore autres choses.*
 
J'ai cherché sur le net sur les sujets de compatibilité platform de la STL mais je ne trouve rien à ce sujet.
Sur linux par exemple il recommande gcc 2.7.x et moi j'ai gcc 3.2.3.
 
Quelqu'un connait il ce problème, y a t-il une solution, où peut on trouvé une doc expliquant tout problème de compatibilité STL ?
Dans les tutorials des STL il n'en parle pas de ça.
 
Merci d'avance de votre aide, c'est urgent.

Reply

Marsh Posté le 04-07-2006 à 16:25:16   

Reply

Marsh Posté le 04-07-2006 à 16:31:32    

t'as le même version de la stl partout ?
 
Mais bon si ça se trouve, ton problème ne se situe pas là.
Comme l'indique son nom, la STL est standard justement.

Reply

Marsh Posté le 04-07-2006 à 16:32:36    

Justement je me pose la question, comment faire pour savoir quelle est la version STL qu'on utilise ?
 
J'ai différente serveur de compile, maintenant comment faire pour savoir quelle est la STL par défaut sur cette bécane ?


Message édité par mimi278 le 04-07-2006 à 16:33:30
Reply

Marsh Posté le 04-07-2006 à 16:33:40    

aucune idée en fait, j'ai jamais eu ce souci, dsl

Reply

Marsh Posté le 04-07-2006 à 16:48:24    

isstringstream,
 
avec un seul s tu veux dire ? istringstream ?
 
tu es capable d'isoler un petit bout code compilable qui pose probleme ?

Reply

Marsh Posté le 04-07-2006 à 16:52:26    

Oui effectivement c'es istringstream.
Le code que tu veux, j'ai même extrait carrément un truc dans un tutorial et cette bête de compilo ralle encore .  
 
#include <sstream>
#include <iostream>
#include <string>
 
main()
{
 
  int n,val;
  std::string stringvalues;
 
  stringvalues = "125 320 512 750 333";
  std::istringstream iss (stringvalues,std::istringstream::in);
 
  for (n=0; n<5; n++)
  {
    iss >> val;
    std::cout << val*2 << std::endl;
  }
 return 0;
}
 
voilà ce qu'il me raconte le linux .... incompréhensible et là j'en met que 10% des lignes :
 
/tmp/ccDtSAdh.o(.text+0x1c): In function `main':
: undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()'
/tmp/ccDtSAdh.o(.text+0x30): In function `main':
: undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(char const*)'
/tmp/ccDtSAdh.o(.text+0x48): In function `main':
: undefined reference to `std::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >::basic_istringstream(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::_Ios_Openmode)'
/tmp/ccDtSAdh.o(.text+0x6d): In function `main':

Reply

Marsh Posté le 04-07-2006 à 16:55:27    

le type de retour de main est int.
il est inutile de repréciser std::istringstream::in) dans le contructeur d'un istringstream.
sinon tout va bien, ce code semble nickel.

Reply

Marsh Posté le 04-07-2006 à 16:56:56    

En effet mais il veut pas compiler ... je t'ai mis des erreurs qu'il sorte ... une trentaine comme ça.

Reply

Marsh Posté le 04-07-2006 à 17:07:16    

OK En fait il faut utiliser g++ et pas gcc, suis bête.
 
Sinon tu disais qu'on peut omettre le deuxième argument du constructeur de istringstream ? On ne lui passe qu'un argument et l'autre sera pris comme paramètre par défaut ?
 
Il n'existe pas une ancienne version de istringstream qui prend en paramètre la taille non ? Car mon code ne compile pas à cause de ça et pourtant ça compile bien sur solaris :  
 
std::string str = "toto";
std::istringstream tampon (str, str.size());

Reply

Sujets relatifs:

Leave a Replay

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