Tôi chưa sử dụng C++ 11, vì vậy tôi đã tự viết các hàm to_string(whatever)
. Chúng chỉ nên được biên dịch nếu chúng không tồn tại. Nếu tôi chuyển sang C++ 11, chúng sẽ bị bỏ qua. Tôi có một cái gì đó như thế này:Xác định hàm/phương thức nếu không được xác định trước C++
#ifndef to_string
string to_string(int a){
string ret;
stringstream b;
b << a;
b >> ret;
return ret;
}
string to_string(double a){
string ret;
stringstream b;
b << a;
b >> ret;
return ret;
}
#endif
Điều này không hoạt động rõ ràng. Là một cái gì đó như thế này có thể và nếu có, làm thế nào?
Nó hoạt động pre-C++ 11, Xem http://cpp.sh/86ldr –
@ArnavBorborah Vâng, nó không nên công việc. 'std :: to_string' là C++ 11 điều – xinaiz
Cá nhân tôi nghĩ rằng đó là một thực hành rất xấu, và không có câu trả lời tốt cho câu hỏi này. C + + tiêu chuẩn không chứng minh 'to_string', nhưng' std :: to_string', mà là rất khác nhau. Điều đó có nghĩa là bạn không thể sử dụng 'std :: to_string' nếu tiêu chuẩn của bạn không hỗ trợ nó. Bây giờ hãy nghĩ lại - giả sử rằng bạn đã sử dụng C++ 11. Gì bây giờ?Nếu bạn sử dụng macro từ câu trả lời được chấp nhận, bạn sẽ cho phần còn lại của cuộc sống của bạn sử dụng nó thay vì 'std :: to_string'? Ý tưởng rất, rất tệ. – xinaiz