Cách để không nhầm lẫn việc trong C++ xâu (string) có độ dài bắt đầu từ 0.
2 câu trả lời
- Nếu quen việc dùng pascal mà sang c++ không quen dùng string với vị trí bắt đầu là 0 thì có thể thêm 1 kí tự *không dùng* vào trước xâu trước khi xử lí (nếu cần thiết) :))
Vd:
// Kiểm tra xâu đối xứng :))
#include <iostream>
using namespace std;
int main() {
string s; int res = 0;
cin >> s;
int l = s.size();
s = " " + s;
for (int i = 1; i <= l; ++i)
if (s[i] != s[l - i + 1]) res++;
cout << !bool(res);
}
Ví dụ trong C++ string bắt đầu từ chỉ số 0 đến chỉ số s.size() - 1
Còn Pascal thì bắt đầu từ 1 -> length(s)
Ví dụ khi truy cập phần tử thứ 2 trong C++ sẽ là s[2 - 1] (vì chỉ số bắt đầu từ 0)
Index: 0 1 2
Str: s[0] s[1] s[2]
Khi xuất ra màn hình s[2] có nghĩa là xuất phần tử số 3, vì vậy muốn xuất phần tử 2 thì xuất s[2 - 1] hay s[1]
Còn Pascal muốn truy cập phần tử thứ 2 thì s[2]
Nếu quen Pascal thì thêm một kí tự trắng ở trước xâu là được