Tôi cần kiểm tra xem chuỗi std: bắt đầu bằng "xyz" hay chưa. Làm thế nào để làm điều đó mà không cần tìm kiếm thông qua toàn bộ chuỗi hoặc tạo chuỗi tạm thời với substr().std :: so sánh chuỗi (kiểm tra xem chuỗi bắt đầu bằng một chuỗi khác)
Trả lời
tôi sẽ sử dụng so sánh phương pháp:
std::string s("xyzblahblah");
std::string t("xyz")
if (s.compare(0, t.length(), t) == 0)
{
// ok
}
Tôi cảm thấy tôi không hiểu đầy đủ câu hỏi của bạn. Có vẻ như nó không đáng kể:
s[0]=='x' && s[1]=='y' && s[2]=='z'
Điều này chỉ nhìn vào (tối đa) ba ký tự đầu tiên. Tổng quát cho một chuỗi mà không biết tại thời gian biên dịch sẽ yêu cầu bạn phải thay thế ở trên với một vòng lặp:
// look for t at the start of s
for (int i=0; i<s.length(); i++)
{
if (s[i]!=t[i])
return false;
}
Vâng, tôi biết cách so sánh các chuỗi bằng cách sử dụng các hàm C. Câu hỏi của tôi là làm theo cách hướng đối tượng bằng phương tiện C++ STL. – jackhab
Không có chức năng C nào được sử dụng tại đây. Và Thư viện chuẩn không loại trừ bạn khỏi việc viết những lời không công khai của riêng bạn. –
và nếu t ngắn hơn s thì sao? – vidstige
Look để String Algo thư viện của Boost, mà có một số chức năng hữu ích, chẳng hạn như starts_with, istart_with (trường hợp không nhạy cảm), vv Nếu bạn muốn sử dụng chỉ là một phần của thư viện tăng trong dự án của bạn, sau đó bạn có thể sử dụng tiện ích BCP để sao chép các tập tin chỉ cần
cách tiếp cận Một có thể nhiều hơn giữ tinh thần của Thư viện chuẩn sẽ là để xác định thuật toán starts_with của riêng bạn.
#include <algorithm>
using namespace std;
template<class TContainer>
bool begins_with(const TContainer& input, const TContainer& match)
{
return input.size() >= match.size()
&& equal(match.begin(), match.end(), input.begin());
}
này cung cấp một giao diện đơn giản để mã khách hàng và tương thích với hầu hết các container thư viện chuẩn.
- 1. Kiểm tra xem chuỗi có bắt đầu bằng hoặc kết thúc bằng một chuỗi khác
- 2. Cách kiểm tra xem chuỗi có bắt đầu bằng một chuỗi khác trong C không?
- 3. Kiểm tra xem chuỗi "bắt đầu bằng" một chuỗi khác trong ASP cổ điển?
- 4. jquery kiểm tra xem chuỗi có bắt đầu bằng 1234
- 5. Kiểm tra xem chuỗi có bắt đầu bằng XXXX
- 6. KSH kiểm tra xem chuỗi có bắt đầu bằng chuỗi con
- 7. Cách so sánh một chuỗi so với nhiều chuỗi khác
- 8. Kiểm tra xem chuỗi không chứa một chuỗi khác
- 9. jQuery kiểm tra xem phần tử có một lớp bắt đầu bằng một số chuỗi
- 10. cách kiểm tra chuỗi bắt đầu bằng C++
- 11. Cách kiểm tra xem chuỗi có bắt đầu bằng một trong các tiền tố không?
- 12. kiểm tra xem có thư mục có tên bắt đầu bằng một chuỗi cụ thể
- 13. Kiểm tra xem chuỗi có bắt đầu bằng http hay không bằng cách sử dụng Javascript
- 14. Kiểm tra nếu chuỗi không bằng một trong hai chuỗi
- 15. Kiểm tra chuỗi bình đẳng/so sánh chuỗi trong vỏ Cá?
- 16. Chuỗi đối sánh RegExp không bắt đầu bằng số
- 17. Complex "Chứa" chuỗi so sánh
- 18. Làm cách nào để xem NSString có bắt đầu bằng một chuỗi nhất định khác không?
- 19. Làm cách nào để kiểm tra xem chuỗi có bắt đầu bằng chuỗi nhất định trong C không?
- 20. Kiểm tra xem chuỗi có kết thúc bằng chuỗi đã cho trong clojure
- 21. chuỗi so sánh phần
- 22. So sánh chuỗi PostgreSQL
- 23. Kiểm tra xem chuỗi có bắt đầu bằng chữ cái thường không
- 24. Kiểm tra xem một chuỗi bắt đầu với một số trong PHP
- 25. so sánh chuỗi bash
- 26. So sánh một chuỗi có chuỗi rỗng (Java)
- 27. Toán tử so sánh cho chuỗi C
- 28. Actionscript 3: kiểm tra xem chuỗi có chứa một chuỗi khác
- 29. Làm cách nào để kiểm tra xem chuỗi chuỗi có chứa một chuỗi trong JavaScript không?
- 30. So sánh chuỗi. Làm thế nào bạn có thể so sánh chuỗi với std :: wstring? WRT strcmp
Tôi đã quên về so sánh - đây là phương pháp tốt nhất, nhưng không cần sử dụng c_str (0 để nhận chuỗi ký tự –
Bạn cũng có thể thực hiện chuỗi s ("xyz") == "xyz". :) – Skurmedel
Neil, bạn hoàn toàn đúng, tôi đã chỉnh sửa câu trả lời và xóa c_str() gọi – Wacek