Chương trình in ra số xâu khác nhau trong các xâu vừa nhập sai ở đâu?

#include <iostream>
#include <cstring>

using namespace std;

int main(){
    int n, cnt=0;
    cin >> n;
    string s[n];
    for(int i=0; i<n; ++i)
        getline(cin, s[i]);
    for(int i=0; i<n; ++i)
        for(int j=i+1; j<n; ++j)
            if(strcmp(s[i], s[j])==0)
                ++cnt;
                
    cout << n-cnt;
    return 0;       
}

14 24 E:\Code\Dem_xau_khac_nhau.cpp [Error] cannot convert ‘std::string {aka std::basic_string}’ to ‘const char*’ for argument ‘1’ to ‘int strcmp(const char*, const char*)’
Các bác cho e hỏi chương trình của e lỗi so sánh 2 chuỗi sai ở đâu nhỉ?
Mà thông báo lỗi như vậy có nghĩa gì ạ
Mong các bác đi qua giúp đỡ

Bạn thật vất vả và cũng thật lẫn lộn.
C++ đã có thư viện string hỗ trợ đầy đủ mọi thao tác với chuỗi (xâu) rồi. Nhưng bạn cố nhét nó về char* của bộ thư viện cstring (string.h của C).
So sánh 2 chuỗi của bộ thư viện string trong C++ chỉ cần dùng str1 == str2 thôi bạn ơi! Không vất vả gì đâu.

Nhớ, nếu là C++ thì hãy tận dụng những bộ thư viện chuẩn có sẵn, đừng cố dùng thư viện của C.

5 Likes

cảm ơn bạn nhiều. vất vả vì chưa biết hết mà

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