Ví dụ trường hợp này, s[4] không tồn tại, nhưng mình vẫn cố lấy ra thì C++ không báo lỗi, nhưng s[4] chứa giá trị gì thì không ai biết được.
string s = "123";
std::cout << s[4];
Em xem bài mảng, con trỏ để hiểu thêm.
Ví dụ trường hợp này, s[4] không tồn tại, nhưng mình vẫn cố lấy ra thì C++ không báo lỗi, nhưng s[4] chứa giá trị gì thì không ai biết được.
string s = "123";
std::cout << s[4];
Em xem bài mảng, con trỏ để hiểu thêm.
Hôm qua mình chỉ bạn cái này sao nói k chạy được
Thế chuỗi có 1000 ký tự cũng copy vào print để tính hả anh :3
Đây là một cách “hack” hay mà. Đâu phải lúc nào cũng áp dụng được. hehe
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
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])
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
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á
#include <iostream>
#include <string>
int main()
{
std::string s = "abcdxyz";
std::cout << s.begin() - s.end();
}
strlen(str.c_str());
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ả.
Đó 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 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
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.
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.