Salut!
Je possède une classe ITextArchive, celle-ci ne fait rien d'autre que de lire des fichiers ou bien des chaînes de caractères de différent format.
Mais là n'est pas le problème, bref, je veux envoyer des données sous forme de format texte en réseau, pour simplifier au maximum les choses, j'ai fais une classe qui se charge de transformer les données dans le format désiré avant de les mettre dans le flux.
Voici donc ce que ça donne à l'envoi :
Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 std::ostringstream oss; OTextArchive oa(oss); Hero* hero = static_cast<Hero*> (World::getEntities("E_HERO")[0]); oa(hero); SymEncPacket packet; packet<<"CARINFOS"+oss.str(); user->sendTcpPacket(packet); oss.str(""); Monster* monster = static_cast<Monster*>(World::getEntities("E_MONSTER")[0]); oa(monster); packet.clear(); packet<<"MONSTERSINFOS"+oss.str(); user->sendTcpPacket(packet);
Jusque là pas de soucis, le soucis provient lors de la lecture :
Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 std::string response = Network::waitForLastResponse("CARINFOS", sf::seconds(10.f)); std::istringstream iss(response); ITextArchive ia(iss); ia(hero); response = Network::waitForLastResponse("MONSTERSINFOS", sf::seconds(10.f)); iss.str(response); ia(monster);
Il me lis très bien le hero, par contre, pour le monstre, cela foire car, après l'appel à str, il ne m'extrait pas les bonnes informations du flux, bref, lorsque j'affiche ce qu'il y a dans le flux et lorsque j'extrais ce qu'il y a dans le flux, je n'obtient pas la même chose, j'ai donc essayé de faire un seekg mais ça ne résous pas le problèmes. :/
J'ai cependant pu trouvé une solution en recréer un nouveau flux plutôt que de réutiliser le même :
Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 std::istringstream iss2(response); ITextArchive ia2(iss2); ia2(monster);
Voila si quelqu'un sait pourquoi la première solution ne fonctionne pas, merci d'avance pour l'aide.
Ca me surprend que avec ostringstream ça fonctionne sans problème mais que avec istringstream ça foire. :/
Partager