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

Câu hỏi trong lớp Xem thêm