Tính độ dài string mà không dùng hàm length()

Đây là một cách “hack” hay mà. Đâu phải lúc nào cũng áp dụng được. hehe

3 Likes

Hôm nay ngứa nghề nghịch thử, thế mà nó chạy đc, nhưg a Đạt chỉ ra 1 lỗi sai của nó rồi, ngon nhất thì vẫn cứ làm biên con chạy Interator

3 Likes

Cho e hỏi i++ phía sau dùng để làm gì ?

Để đếm thôi, biến i thông thường là biến đếm.

Nếu không cho dùng method của std::string thì dùng strlen cũng được strlen(&s[0]) :wink:

3 Likes

Hay nè, vậy bài này có nhiều cách giải chứ đâu có khó. Thank @tranhuanltv

1 Like

Chắc thầy muốn trò hiểu cách string trong c/c++ được lưu trữ thế nào nên đánh đố nhau vậy

4 Likes

Nếu anh @ltd đã dùng iterator sao không tính như thế này:

int len=s.end()-s.begin();
5 Likes

Superb, đúng là @Gio luôn có những câu trả lời rất đáng ngạc nhiên nhé, em hiểu rõ về std quá :+1:

#include <iostream>
#include <string>

int main()
{
    std::string s = "abcdxyz";
    std::cout << s.begin() - s.end();
}
1 Like
strlen(str.c_str());
1 Like

Nếu thử với std::string s=“Hello world!!/0”; thì chẳng có trường hợp nào đếm đủ 15 kí tự cả.

1 Like

Đó là vì bạn muốn biểu diễn kí tự \ trong chuỗi thì bạn phải ghi \\

trước giờ vẫn dùng bằng cách: for(int i = 0; str[i] != 0 ; i++) với str là string :smile: mình không thích dùng hàm lắm vì nó tạo cảm giác bị động và phải nhớ nhiều :smiley:

cho e hỏi cái điều kiện != ‘/0’ nghĩa là sao ạ. e mới thấy nên k biết

Ký tự kết thúc chuỗi là \0', nên *it != '\0' có nghĩa là chưa hết thúc chuỗi.

1 Like

a datnh giỏi quá. Biết viết gì cho đủ 20 ký tự đây …

Trừ phi có reflector thì ko nên và ko cần thiết phải vén “bức màn” encapsulation.

Tính độ dài string mà không dùng hàm length() thì cứ việc duyệt string[i] với i tăng dần, lúc nào chương trình báo IndexArrayOutOfBound exception thì tức là hết string =]]

1 Like

Mình nghĩ cái này cũng không nhất thiết sử dụng vector đâu, dùng mảng char là được rồi. Cái này nên convert string sang mảng char và làm như thông thường là được á. Đề bài không cho dùng len với string thì dùng len với mảng char. Có chết ai đâu! :grinning:

ngầu lòi… thật thì đúng ai chăm học thì nhìn ra chứ như em học xong quên thì công nhận là … :smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?