Bài toán: Tôi có một số nguyên; số nguyên này cần được chuyển đổi thành kiểu stl :: string.
Trong quá khứ, tôi đã từng stringstream
thực hiện một chuyển đổi, và điều đó thật phức tạp. Tôi biết cách C là thực hiện một sprintf
, nhưng tôi muốn thực hiện một phương thức C ++ là an toàn kiểu chữ (er).
Có cách nào tốt hơn để làm điều này?
Đây là cách tiếp cận dòng chuỗi mà tôi đã sử dụng trong quá khứ:
std::string intToString(int i)
{
std::stringstream ss;
std::string s;
ss << i;
s = ss.str();
return s;
}
Tất nhiên, điều này có thể được viết lại như vậy:
template<class T>
std::string t_to_string(T i)
{
std::stringstream ss;
std::string s;
ss << i;
s = ss.str();
return s;
}
Tuy nhiên, tôi có quan điểm rằng đây là một cách thực hiện khá 'nặng đô'.
Zan lưu ý rằng lời kêu gọi khá đẹp, tuy nhiên:
std::string s = t_to_string(my_integer);
Ở bất kỳ mức độ nào, một cách đẹp hơn sẽ là ... tốt đẹp.
Có liên quan:
Thay thế cho itoa () để chuyển đổi số nguyên thành chuỗi C ++?