2009-08-10 32 views
14

Tôi có một std :: string và int. Tôi muốn nối thêm int vào chuỗi, nhưng ở dạng có thể đọc được của con người (ký hiệu hex), chứ không phải ở dạng nhị phân.Làm cách nào để nối dữ liệu vào chuỗi std :: ở định dạng hex?

Thông thường, tôi muốn chỉ cần sử dụng printf, nhưng tôi không thể làm điều này với một std :: string (có thể tôi?)

Bất kỳ lời đề nghị như thế nào để làm điều này?

Example: 
Given: 
    std::string - "Your Id Number is: " 
    int - 0xdeadc0de 
Output: 
    std::string - "Your Id Number is: 0xdeadc0de" 

Trả lời

30

Sử dụng chuỗi. Bạn có thể sử dụng nó như bất kỳ luồng đầu ra nào khác, do đó bạn có thể chèn std::hex vào nó. Sau đó giải nén chức năng stringstream::str() của nó.

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

std :: showbase nên được sử dụng ngoài std :: hex để khớp chính xác với yêu cầu của OP về tiền tố đại diện của int với "0x" –

5

Xây dựng dựa trên câu trả lời của xtofl, tiêu đề bạn đang tìm kiếm là <iomanip>. Đây là nơi std::hex, std::decstd::oct hoạt động, tất cả đều có thể được chuyển hướng vào luồng sao cho mọi thứ được gửi vào luồng sau khi chúng được chuyển đổi thành cơ sở đó.

0

Tôi tin 'chuỗi' chỉ chuyển tiếp tuyên bố std :: stringstream. Vì vậy, bạn cũng cần phải bao gồm:

#include <sstream> 
Các vấn đề liên quan