/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Konvetering fra stringstream til string.
Fra : Kristian Kjems


Dato : 12-10-01 00:55

Jeg har et problem med at konvetere en stringstream til en string(se
eksempel).
Er der en lettere måde at lave en integer værdi om til en HEX værdi
representeret som en tekststreng?

#include <iostream.h>
#include <sstream>

std::string IntToHexString(int n){
std::stringstream ss("");
std::string s;
cout << "Det her virker fint: " << hex << n << endl; // Denne linie
laver en int om til en hex værdi. (n=15 bliver til ss="e")
ss << hex << n << endl;
s = ss.str();
cout << "Det her er forkert: " << s.c_str();
return (ss.str());
}

-Kristian Kjems



 
 
Mogens Hansen (12-10-2001)
Kommentar
Fra : Mogens Hansen


Dato : 12-10-01 03:04


"Kristian Kjems" <kjems@kampsax.dtu.dk> wrote in message
news:9q5bgf$uj6$1@news.net.uni-c.dk...
> Jeg har et problem med at konvetere en stringstream til en string(se
> eksempel).

Hvad er problemet ?
Compilerer det ikke ? Kører det ikke ?
Altså bortset fra lidt småting

> Er der en lettere måde at lave en integer værdi om til en HEX værdi
> representeret som en tekststreng?

Nej, det syntes jeg ikke

>
> #include <iostream.h>

bør være
#include <iostream>


> #include <sstream>
>
> std::string IntToHexString(int n){
> std::stringstream ss("");

argumentet til initialisering er overflødig, men skader ikke
std::stringstream ss;

> std::string s;
> cout << "Det her virker fint: " << hex << n << endl; // Denne linie

std::cout << "Det her virker fint: " << std::hex << n << std::endl;

> ss << hex << n << endl;

ss << std::hex << n << std::endl;

> s = ss.str();
> cout << "Det her er forkert: " << s.c_str();

kaldet til "s.c_str()" er overflødigt, men skader ikke
std::cout << "Det her er forkert: " << s;

> return (ss.str());
> }
>

Venlig hilsen

Mogens Hansen



Kristian Kjems (12-10-2001)
Kommentar
Fra : Kristian Kjems


Dato : 12-10-01 10:39



#include <iostream.h>
#include <sstream>

std::string IntToHexString(int n){
std::stringstream ss;
std::string s;
cout << "Det her virker fint: " << hex << n << endl;
ss << hex << n << endl;
s = ss.str();
cout << "Det her er forkert: " << s.c_str();
return (ss.str());
}



/* OUTPUT START n=254 */
Det her virker fint: fe
Det her er forkert: 004010DC2540040116D
/* OUTPUT SLUT */

Hvis jeg bruger :
cout << "Det her er forkert: " << s;
kommer den med følgende compile fejl:

error C2679: binary '<<' : no operator defined which takes a right-hand
operand of type 'class std::basic_string<char,struct
std::char_traits<char>,class std::allocator<char> >' (or there is no
acceptable conversion)



Mogens Hansen (12-10-2001)
Kommentar
Fra : Mogens Hansen


Dato : 12-10-01 10:50


"Kristian Kjems" <kjems@kampsax.dtu.dk> wrote in message
news:9q6do5$o5k$1@news.net.uni-c.dk...
>

>
> error C2679: binary '<<' : no operator defined which takes a right-hand
> operand of type 'class std::basic_string<char,struct
> std::char_traits<char>,class std::allocator<char> >' (or there is no
> acceptable conversion)
>

Prøv at includere <string>

Venlig hilsen

Mogens Hansen



Kristian Kjems (12-10-2001)
Kommentar
Fra : Kristian Kjems


Dato : 12-10-01 19:47

Jeg fandt ud af at det var mit manglende "std::hex" istedet for bare "hex"
der var grund til mit problem.

#include <iostream.h>
#include <sstream>

std::string IntToHexString(int n){
std::stringstream ss;
std::string s;
cout << "Det her virker fint: " << std::hex << n << endl;
ss << std::hex << n << endl;
s = ss.str();
cout << "Det her er forkert: " << s.c_str();
return (ss.str());
}



"Kristian Kjems" <kjems@kampsax.dtu.dk> wrote in message
news:9q6do5$o5k$1@news.net.uni-c.dk...
>
>
> #include <iostream.h>
> #include <sstream>
>
> std::string IntToHexString(int n){
> std::stringstream ss;
> std::string s;
> cout << "Det her virker fint: " << hex << n << endl;
> ss << hex << n << endl;
> s = ss.str();
> cout << "Det her er forkert: " << s.c_str();
> return (ss.str());
> }
>
>
>
> /* OUTPUT START n=254 */
> Det her virker fint: fe
> Det her er forkert: 004010DC2540040116D
> /* OUTPUT SLUT */
>
> Hvis jeg bruger :
> cout << "Det her er forkert: " << s;
> kommer den med følgende compile fejl:
>
> error C2679: binary '<<' : no operator defined which takes a right-hand
> operand of type 'class std::basic_string<char,struct
> std::char_traits<char>,class std::allocator<char> >' (or there is no
> acceptable conversion)
>
>



Benny Andersen (13-10-2001)
Kommentar
Fra : Benny Andersen


Dato : 13-10-01 00:34

On Fri, 12 Oct 2001 01:54:55 +0200, "Kristian Kjems"
<kjems@kampsax.dtu.dk> wrote:

>Jeg har et problem med at konvetere en stringstream til en string(se
>eksempel).
>Er der en lettere måde at lave en integer værdi om til en HEX værdi
>representeret som en tekststreng?
>
>#include <iostream.h>
>#include <sstream>
>
>std::string IntToHexString(int n){
> std::stringstream ss("");
> std::string s;
> cout << "Det her virker fint: " << hex << n << endl; // Denne linie
>laver en int om til en hex værdi. (n=15 bliver til ss="e")
> ss << hex << n << endl;
> s = ss.str();
> cout << "Det her er forkert: " << s.c_str();
> return (ss.str());
>}
Man kunne også:
std::string IntToHexString(int n)
{
   char buf[34]; // vc6.0 specific size
   return std::string(itoa(n,buf,16));
}

Men det er vist mindre portabelt end din stil.

MVH Benny Andersen


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste