Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Hướng dẫn C++ | Cách nhận biết kiểu dữ liệu của một biến

  1. #1
    Ngày gia nhập
    11 2008
    Bài viết
    186

    Thumbs down Hướng dẫn C++ | Cách nhận biết kiểu dữ liệu của một biến

    Mò mẫm hoài tìm cái tra cứu thư viện <typeinfo> mà không được
    Lần mò ra được 1 cái của nó dùng để check kiểu dữ liệu như sau:

    Yêu cầu:
    Compiler: GCC/G++
    <chú ý: compiler mà khác thì sẽ ra kết quả khác hoàn toàn>


    Cách tiến hành:
    1. Sử dụng thư viện <typeinfo>
    2. ta sử dụng typeid(tên_biến_đã_định_nghĩa_từ_trư c).name() để lấy giá trị tên kiểu dữ liệu của biến

    ví dụ
    C++ Code:
    1. int i = 2;
    2. std::cout << typeid(i).name(); // output: i (tương ứng với integer)
    vậy thôi rất đơn giản

    Template Kim viết như sau:

    C++ Code:
    1. /*
    2.  * @author bvKim
    3.  * @file template_05.cpp
    4.  * @date 15-Nov-2008
    5.  * @note
    6.  *      validate datatype name of a variable
    7.  */
    8.  
    9. /****************/
    10. /* Preprocessor */
    11. /****************/
    12. #include <iostream>
    13. #include <typeinfo>
    14. #include <string>
    15.  
    16. /******************/
    17. /* Member declare */
    18. /******************/
    19. template <typename T>
    20. std::string get_dtype_name(T const&);
    21.  
    22. /***************/
    23. /* Entry point */
    24. /***************/
    25. int main(int argc, char *argv[])
    26.  
    27. {
    28.     int x = 1;
    29.     std::cout << "X la bien kieu: " << ::get_dtype_name(x) << std::endl; // output: i (tuc la: integer)
    30.     char c;
    31.     std::cout << "C la bien kieu: " << ::get_dtype_name(c) << std::endl; // output: c (tuc la: char)
    32.     std::string s;
    33.     std::cout << "S la bien kieu: " << ::get_dtype_name(s) << std::endl; // output: Ss (tuc la: string)
    34.     float f;
    35.     std::cout << "F la bien kieu: " << ::get_dtype_name(f) << std::endl; // output: f (tuc la: float)
    36.     return EXIT_SUCCESS;
    37. }
    38.  
    39. /*****************/
    40. /* Member define */
    41. /*****************/
    42. template <typename T>
    43. std::string get_dtype_name(T const& var)
    44. {
    45.     return typeid(var).name();
    46. }
    Đã được chỉnh sửa lần cuối bởi bvKim : 15-11-2008 lúc 11:21 AM.

  2. #2
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    Hơi khó hiểu bạn ơi, có gì viết thêm tí hướng dẫn nữa giúp...
    bài viết đang hướng dẫn cậu nhận biết kiểu dữ liệu mà cậu đang dùng ở 1 biến thôi,có điều tác giả nói thế này thì tắt quá

  3. #3
    Ngày gia nhập
    11 2008
    Bài viết
    186

    update rồi đó, vì cái này cũng không có gì cả.
    với lại cái này không có quy ước chuẩn nào hết trong tiêu chuẩn C/C++.

    nhớ đọc chú ý ở trên.
    các compiler khác nhau sẽ cho các kết quả khác nhau, hệ điều hành khác nhau cũng cho kết quả khác nhau.

Các đề tài tương tự

  1. Lỗi chương trình không nhận biến(không return được biến từ public sang main)
    Gửi bởi nang trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 4
    Bài viết cuối: 02-10-2011, 06:04 PM
  2. Thuộc tính khóa ngoài( tham chiếu) biến mất khi biến đổi từ file XML sang DataTable
    Gửi bởi itmanhieu trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 17-08-2011, 08:02 PM
  3. làm sao để 2 biến Datetime trừ nhau ra biến float or double?
    Gửi bởi robocon1183 trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 1
    Bài viết cuối: 10-12-2009, 05:11 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn