简体   繁体   中英

How can I append data to a std::string in hex format?

I have an existing std::string and an int . I'd like to concatenate the ASCII (string literal) hexadecimal representation of the integer to the std::string .

For example :

 std::string msg = "Your Id Number is: ";
 unsigned int num = 0xdeadc0de; //3735929054

Desired string :

std::string output = "Your Id Number is: 0xdeadc0de";

Normally, I'd just use printf, but I can't do this with a std::string (can I?)

Any suggestions as to how to do this?

Use a stringstream. You can use it as any other output stream, so you can equally insert std::hex into it. Then extract it's stringstream::str() function.

std::stringstream ss;
ss << "your id is " << std::hex << 0x0daffa0;
const std::string s = ss.str();

Building on xtofl's answer, the header you're looking for is <iomanip> . This is where std::hex , std::dec , and std::oct live, all of which can be directed into streams such that whatever gets sent into the stream after them is converted to that base.

I believe 'string' only forward declares std::stringstream. So you also need to include:

#include <sstream>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM