Bonjour.

J'ai un type définit comme suit: (c'est un mot de 64 bits, ou 2 mots de 32 bits)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
typedef union
{
  //1 mot de 64 bits
  unsigned __int64 motEntier;
 
  //2 mots de 32 bits
  struct
  {
    unsigned int part1;
    unsigned int part2;
  }mot32;
 
} Mot64;
ça je ne peux pas y toucher!

Maintenant, j'essaie de mettre un de ces mots dans un string, mais ça ne marche pas des façons que j'ai essayé:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
//init de mon mot:
Mot64 monMot;
monMot.motEntier=982280960055126;
 
//un petit oss pour la conversion, et un string:
ostringstream oss;
string monString;
 
//mes essais:
 
oss << monMot.motEntier;
//compilation error: operator '<<' is ambiguous
 
oss << (unsigned __int64) monMot.motEntier;
//compilation error: operator '<<' is ambiguous
 
oss << (double) monMot.motEntier;
//compilation error: conversion from unsigned __int64 to double not implemented, use signed __int64
 
oss << (signed __int64) monMot.motEntier;
//compilation error: operator '<<' is ambiguous
 
oss << (int) monMot.mot32.part1 << (int) monMot.mot32.part2
//ca compile et execute, mais evidemment ne me donne pas le bon resultat
Si quelqu'un a une idée je suis preneur, parce que la je sèche.
Je suis bien allé voir la faq, comment convertir n'importe quel type d'objet en string, mais je ne comprend pas bien les classes templates.