Tôi chỉ cần sử dụng hàm so sánh chuỗi không phân biệt chữ hoa chữ thường iequals
từ thư viện BOOST.Tôi có thể đưa/nhập một hàm đơn từ thư viện trong C++
Tôi đang sử dụng #include <boost/algorithm/string.hpp>
để nhập.
Có cách nào để tôi chỉ có thể nhập chính hàm iequals
không?
Lý do tôi thậm chí quan tâm (tôi thực sự chỉ tò mò.) Là vì DLL được biên dịch là khoảng 230kB nếu tôi không #include
và khoảng 1,1MB nếu tôi làm. Nó không thực sự tạo ra sự khác biệt nhiều trong trường hợp cụ thể này là bao nhiêu, nhưng có vẻ như có rất nhiều thứ được nhập khẩu và không bao giờ được sử dụng. Nếu thư viện là một vài GB và tôi chỉ cần một trong các chức năng? Sau đó, nó sẽ trở thành một vấn đề, tôi tưởng tượng.
Tôi thừa nhận là ngây thơ khi nói đến bất cứ điều gì liên quan đến cpp, nhưng tôi cảm thấy nó không phải là rất hiệu quả để bao gồm một số 750kB mã khi có lẽ 90% của nó không được sử dụng. Có thể là chức năng iequals
sử dụng tất cả 750kB đó, tôi không biết.
Sau đó, một lần nữa, nếu hàm iequals
bao gồm nhiều thư viện giống nhau, tệp sẽ vẫn lớn.
Suy nghĩ?
Cảm ơn trước vì lời khuyên nào.
CHỈNH SỬA:
Cảm ơn bạn đã trả lời. Tôi đang cố hết sức để hiểu họ.
Tôi là một kỹ sư hóa học đang viết lại một loạt các macro VBA chậm và kém được tối ưu hóa thành một DLL C++. Cho đến nay các kết quả đã được xuất sắc và tất cả mọi thứ hoạt động chính xác. Tôi chỉ không thấy sự cần thiết cho kích thước tập tin thêm nếu tôi chỉ cần làm một loại so sánh duy nhất giữa hai dây.
Một ví dụ về sự so sánh tôi cần phải làm như sau:
if (SomeBSTR == "SomeTextHere") {
// do stuff
}
hoặc chính xác hơn:
if (Gas == "Methane" or
Gas == "CH4" or
Gas == "C1") return 1;
if (Gas == "Ethane" or
Gas == "C2H6" or
Gas == "C2") return 2;
Nếu đây là kiểu CHỈ so sánh mà tôi phải làm, có thể Tôi làm điều đó một cách đơn giản hơn:
int wStrCmp(const BSTR Str1, const wstring Str2) {
wstring wStr1(Str1, SysStringLen(Str1));
return boost::iequals(Str1, Str2);
}
được gọi qua:
if (wStrCmp(Gas, L"Methane") or
wStrCmp(Gas, L"CH4") or
wStrCmp(Gas, L"C1")) return 1;
2 khối cuối cùng này được dán thực tế từ mã của tôi.
Xin cảm ơn một lần nữa, các bạn.
Bạn đã cân nhắc sử dụng ['strcasecmp'] (http://linux.die.net/man/3/strcasecmp) (POSIX) hoặc [' _stricmp'] (http://msdn.microsoft.com/vi -us/library/k59z8dwe% 28v = vs.80% 29.aspx) (Windows) thay thế? –