|
| 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
| |
|
|