Tôi có chuỗi bắt đầu bằng nhiều khoảng trắng. Nếu tôi muốn tìm ra vị trí của nhân vật đầu tiên không phải là một không gian, tôi sẽ làm như thế nào?Cách tìm ký tự đầu tiên trong chuỗi C++
Trả lời
Xem std::string::find_first_not_of
.
Để tìm vị trí (index) của nhân vật không gian đầu tiên:
str.find_first_not_of(' ');
Để tìm vị trí (index) của nhân vật phi trống đầu tiên:
str.find_first_not_of(" \t\r\n");
Nó trả về str.npos
nếu str
trống hoặc chứa toàn bộ khoảng trống.
Bạn có thể sử dụng find_first_not_of
để cắt vi phạm khoảng trống hàng đầu:
str.erase(0, str.find_first_not_of(" \t\r\n"));
Nếu bạn không muốn hardcode mà nhân vật được tính là khoảng trống (ví dụ sử dụng một miền địa phương), bạn vẫn có thể tận dụng của isspace
và find_if
theo nhiều cách hoặc ít hơn theo cách ban đầu được đề xuất bởi sbi, nhưng cẩn thận để phủ nhận isspace
, ví dụ:
string::iterator it_first_nonspace = find_if(str.begin(), str.end(), not1(isspace));
// e.g. number of blank characters to skip
size_t chars_to_skip = it_first_nonspace - str.begin();
// e.g. trim leading blanks
str.erase(str.begin(), it_first_nonspace);
Tôi chỉ có một câu hỏi: bạn có thực sự cần thêm khoảng trống không?
tôi sẽ gọi sức mạnh của Boost.String đó;)
std::string str1 = " hello world! ";
std::string str2 = boost::trim_left_copy(str1); // str2 == "hello world! "
Có rất nhiều hoạt động (find
, trim
, replace
...) cũng như các vị từ có sẵn trong thư viện này, bất cứ khi nào bạn cần string
hoạt động không được cung cấp ngoài hộp, hãy kiểm tra tại đây. Ngoài ra các thuật toán có một số biến thể mỗi lần (phân biệt dạng chữ và sao chép nói chung).
- 1. Twig: Cách lấy ký tự đầu tiên trong một chuỗi
- 2. Cách lấy ký tự đầu tiên của chuỗi trong SQL?
- 3. Xóa ký tự đầu tiên của chuỗi
- 4. Mysql cắt chuỗi, ký tự đầu tiên?
- 5. cách xóa 3 ký tự đầu tiên khỏi chuỗi nsstring?
- 6. Làm cách nào để tìm ký tự không lặp lại đầu tiên từ một chuỗi?
- 7. Remove ký tự đầu tiên của một chuỗi trong Bash
- 8. Xóa N ký tự đầu tiên khỏi chuỗi
- 9. Python: Lấy ký tự đầu tiên của chuỗi đầu tiên trong danh sách?
- 10. Lấy và xóa ký tự đầu tiên của chuỗi
- 11. Remove ký tự đầu tiên từ chuỗi nếu 0
- 12. Smarty substr chuỗi bỏ qua ký tự đầu tiên
- 13. Cách kiểm tra ký tự đầu tiên trong một chuỗi trong unix
- 14. Xóa 3 ký tự đầu tiên và 3 ký tự cuối cùng từ chuỗi PHP
- 15. C# logic để lấy ký tự đầu tiên không lặp lại (khác biệt) từ chuỗi
- 16. Ký tự đầu tiên viết hoa Lua
- 17. Mã hóa ký tự và chuỗi ký tự trong C++
- 18. Làm cách nào để tìm hiểu xem ký tự đầu tiên của chuỗi có phải là một số không?
- 19. Làm thế nào để bạn kéo 100 ký tự đầu tiên của một chuỗi trong PHP
- 20. Làm cách nào để xóa ký tự đầu tiên và cuối cùng của chuỗi?
- 21. Làm cách nào để xóa các ký tự X đầu tiên khỏi chuỗi bằng sed?
- 22. Xóa n ký tự khỏi đầu chuỗi
- 23. bash thay thế ký tự đầu tiên trong mỗi dòng
- 24. Làm cách nào để sử dụng VBScript để tách các ký tự đầu tiên của chuỗi?
- 25. Làm cách nào để xóa 10 ký tự đầu tiên khỏi chuỗi?
- 26. Làm cách nào để tìm loại ký tự hai chiều của ký tự Unicode trong C#?
- 27. Xóa ký tự khỏi chuỗi nếu ký tự bắt đầu bằng ký tự đó?
- 28. cần phải cắt bớt 11 ký tự đầu tiên khỏi một chuỗi trong SQL
- 29. Thay đổi ký tự đầu tiên trong mỗi từ của một chuỗi sang chữ hoa
- 30. Cách xác định xem chuỗi có chứa chuỗi con cụ thể trong các ký tự X đầu tiên
Chuỗi mã hóa của bạn là gì? Nếu đó là ASCII, thì chỉ có 4 ký tự trắng, và giải pháp của Vlad với find_first_not_of là tốt. Các chuỗi ASCII hoặc Latin 1 có thể bao gồm các bài tập dạy học. Nếu chuỗi của bạn là UTF-8 hoặc một ký tự rộng std :: wstring (vì nó có thể nằm trong một ứng dụng thực) thì hãy hỏi một câu hỏi khác. –
Có, trong những trường hợp này người ta có thể sử dụng giải pháp 'find_if' ở botom của cùng một bài (tùy ý sử dụng' boost :: labda :: BLL's '(isspace, _1, my_locale)' để liên kết một miền địa phương cụ thể ' my_locale' thành 'isspace' thay vì sử dụng mặc định). – vladr