- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Tôi đang sử dụng std::string
của find()
测试一个字符串是否是另一个字符串的子字符串的方法。现在我需要同样东西的不区分大小写的版本。对于字符串比较,我总是可以求助于 stricmp()
但似乎没有 stristr()
.
我找到了各种答案,大多数建议使用 Boost
在我的情况下,这不是一个选择。另外,我需要支持 std::wstring
/wchar_t
.有任何想法吗?
1 Câu trả lời
Bạn có thể sử dụng std::search
带有自定义谓词。
#include
#include
#include
sử dụng không gian tên std;
// templated version of my_equal so it could work with both char and wchar_t
template
struct my_equal {
my_equal( const std::locale& loc ) : loc_(loc) {}
bool operator()(charT ch1, charT ch2) {
return std::toupper(ch1, loc_) == std::toupper(ch2, loc_);
}
riêng tư:
const std::locale& loc_;
};
// find substring (case insensitive)
template
int ci_find_substr( const T& str1, const T& str2, const std::locale& loc = std::locale() )
{
typename T::const_iterator it = std::search( str1.begin(), str1.end(),
str2.begin(), str2.end(), my_equal(loc) );
if ( it != str1.end() ) return it - str1.begin();
else return -1; // not found
}
int main(int arc, char *argv[])
{
// string test
std::string str1 = "FIRST HELLO";
std::string str2 = "hello";
int f1 = ci_find_substr( str1, str2 );
// wstring test
std::wstring wstr1 = L"ОПЯТЬ ПРИВЕТ";
std::wstring wstr2 = L"привет";
int f2 = ci_find_substr( wstr1, wstr2 );
trả về 0;
}
关于c++ - 不区分大小写的 std::string.find(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61107668/
Tôi đang phát triển một thư viện nhỏ và một trong những điều tôi cần làm là có một người truy cập vào một số dữ liệu và trả về kết quả. Trong một số mã C++ cũ hơn, khách truy cập cần khai báo một typedef return_type. Ví dụ, boost::stati
Tôi đang cố gắng tạo std::any với các khóa và giá trị thuộc kiểu std:map Visual Studio 2017 std::map m("lastname", "Ivanov"); std::cout (m["lastname", "Ivanov");
Tôi đã khai báo một bộ sưu tập trong C++ là std::map>. Làm thế nào tôi có thể lặp lại hoặc in các giá trị tập hợp? Câu trả lời hay nhất Nếu bạn biết cách lặp lại từng std::map hoặc std::set riêng lẻ, bạn sẽ có thể kết hợp các lần lặp mà không gặp vấn đề gì.
Làm thế nào để lặp lại? Tôi đã thử cách này: //----- code std::vector
Tôi có hai trường hợp sử dụng. A. Tôi muốn đồng bộ hóa quyền truy cập vào hàng đợi từ hai luồng. B. Tôi muốn đồng bộ hóa quyền truy cập của hai luồng vào hàng đợi và sử dụng biến điều kiện vì một trong các luồng sẽ đợi luồng kia lưu trữ thứ gì đó vào hàng đợi. Đối với trường hợp sử dụng A, tôi thấy sử dụng std::lock_
Tôi đã xem tài liệu về cả hai loại đặc điểm nhưng không chắc chắn sự khác biệt là gì. Tôi không phải là luật sư ngôn ngữ, nhưng theo tôi hiểu thì tất cả chúng đều áp dụng cho các kiểu "memcpy-able". Chúng có thể sử dụng thay thế cho nhau được không? Câu trả lời hay nhất Không, các thuật ngữ này không thể sử dụng thay thế cho nhau. Cả hai thuật ngữ đều có nghĩa là
Tôi có mã kiểm tra sau, trong đó có tham số fS là một container ofstream: #include #include #include #include int
Đây là phần tiếp theo của câu hỏi này hàm c++ ptr trong unorderer_map, lỗi thời gian biên dịch Tôi đang cố gắng sử dụng std::function thay vì con trỏ hàm và nó chỉ hoạt động khi hàm là
std::unordered_map str_bool_map = { {"a", true}, {"b", false}, {"c", true} }; Chúng ta có thể sử dụng
Tôi có đối tượng sau std::vector> vectorList; Sau đó tôi thêm vào đây bằng cách sử dụng std::vector vec_tmp; vec_tmp.push_back(strDRG); vec_tmp.p
Tại sao std::initializer_list không hỗ trợ std::get<> , std::tuple_size và std::tuple_element ? Có nhiều biểu thức hiện tại được sử dụng trong constexpr.
Tôi có một biến được định nghĩa như thế này auto drum = std::make_tuple ( std::make_tuple ( 0.3f , Ex
Giả sử tôi có một std::map riêng tư trong lớp của mình. Làm thế nào tôi có thể chuyển đổi nó thành std::map để trả về cho người dùng? Tôi muốn nguyên mẫu sau const std
Giả sử tôi có một std::map riêng tư trong lớp của mình. Làm thế nào tôi có thể chuyển đổi nó thành std::map để trả về cho người dùng? Tôi muốn nguyên mẫu sau const std
Vấn đề Tôi đang cố gắng truyền một lệnh đóng lambda cho std::thread để gọi một hàm bao quanh tùy ý với các đối số bao quanh tùy ý. mẫu std::thread timed_thread(Hàm&& f
Tôi muốn tạo một lớp mẫu có thể chứa bất kỳ sự kết hợp nào giữa các vùng chứa và vùng chứa con. Ví dụ như std::vector hoặc std::map. Tôi đã thử nhiều cách kết hợp nhưng phải thừa nhận là tôi bị choáng ngợp bởi sự phức tạp của các mẫu. Phần đóng mà tôi biên dịch giống như thế này: templ
Tôi có một std::vector
Đôi khi, chúng ta có một nhà máy tạo ra một vectơ std::unique_ptr
Câu hỏi này đã có câu trả lời tại đây: Sắp xếp một vectơ các đối tượng tùy chỉnh (14 câu trả lời) Đã đóng 6 năm trước. Tôi đã tạo ra một vector vector và tôi muốn
Tôi có ba thành viên lớp: public: std::vector
Tôi là một lập trình viên xuất sắc, rất giỏi!