有效STL的第15項說至少有6個不同的std :: string實現。但是如果我必須知道我正在使用哪個實現,我如何找出我正在使用的實現? std :: gcc的字符串不顯示源代碼(全部在.so文件中),那麼如何找出? 找不到任何東西here,所以如果將來我需要查找這樣的信息,我可以在哪裏搜索?我如何知道我正在使用哪個STL字符串實現?
回答
看看<string>
標題和觀看版權?我會補充一點,從我所知道的std::string
是一個basic_string<>
的typedef,所以模板類。現在,我記得,只有Comeau C++支持「導出」模板,因此所有其他編譯器都需要在頭文件中定義和實現模板類。您正在使用GCC,因此可能在<string>
頭文件中您會發現一大串字符串實現。 (我會補充說,製作一個調用非模板類來最小化編譯大小的模板「shim」/「proxy」是一種常見的技巧,所以並不是所有的實現都需要在頭文件中,並且對於在C「字符串」庫的頂部可以定義許多方法的具體情況(但可能不會因爲std::string
認爲null
是有效字符)
啊!找到了!它在basic_string.h中。謝謝:) – Nav 2011-03-28 07:20:30
原因'basic_string'是一個模板,所以它不需要對字符類型做出假設句柄-C C「字符串」不支持寬字符等,所以最多隻能用於'char'的專業化,但是臨時否則只會使代碼更復雜,並可能導致不必要的外線呼叫。 (另外,另一個訣竅是使用特定的模板實例化來製作非模板化的包裝器,使得模板頭不需要被每個客戶端暴露/解析)。 – 2011-03-28 07:42:39
- 1. string :: npos如何知道我指的是哪個字符串?
- 2. 如何知道我正在使用哪個版本的CrafterCMS?
- 3. 我如何知道哪個dsn驅動程序正在使用?
- 4. GitHub如何知道我正在使用哪個帳戶?
- 5. 我如何知道正在使用哪個桌面環境?
- 6. Python:我如何知道我正在導入哪個包?
- 7. 我如何知道我正在運行哪個WPF版本?
- 8. 我如何知道要使用哪個通配符?
- 9. 我如何知道某些字符是否在字符串中?
- 10. 如何使用STL實現自定義字符串類?
- 11. 我如何知道哪些vagrantfile正在使用?
- 12. 我如何知道我使用的是哪個版本的Javascript?
- 13. 我如何知道我使用的是哪個版本的OpenGL?
- 14. 如何知道我需要哪個RedirectToAction?
- 15. 如何知道哪個線程正在運行我的方法?
- 16. 如何知道我正在點擊哪個ImageView?
- 17. 這個網站如何知道我的GOOGLE搜索字符串
- 18. 如何知道我的應用程序正在使用哪個端口
- 19. 服務器如何知道哪個字符編碼查詢字符串正在使用GET請求?
- 20. 我如何知道我的數據庫正在使用哪種恢復模式?
- 21. 如何知道我需要在正則表達式中轉義哪些字符?
- 22. 如何知道我的腳本正在運行哪個Python實例?
- 23. 我如何知道用戶更改了dir字符串和排序字符串?
- 24. 如何知道我正在使用哪個iOS開發人員程序?
- 25. 該方法如何知道我正在使用哪個變量? [Java newb]
- 26. 如何知道我的程序正在使用哪個網絡路徑?
- 27. 我如何知道哪個版本的mysql odbc驅動程序正在使用
- 28. Google Analytics如何知道我們正在使用哪個互聯網連接?
- 29. 如何知道字符串中的哪些字符被分配?
- 30. 我如何才能知道我有一個字符串,如與C#
爲什麼重要?只要實現符合標準的要求,它不應該。 – 2011-03-28 08:27:00