Hàm so sánh trong C++

So sánh chuỗi trong C++

programming
c++
Nguyen_Nhat_Minh (Nhật Minh) April 29, 2018, 11:03am #1

Chào mọi người, mình có viết 1 hàm để so sánh 2 chuỗi có giống nhau không, cụ thể hàm như sau:

bool SoSanh(string s1, string s2) { for (int i = 0; i < s1.size(); i++) s1[i] = toupper(s1[i]); for (int i = 0; i < s2.size(); i++) s2[i] = toupper(s2[i]); if (s1.compare(s2) == 0) { return true; } return false; }

Nhưng khi debug thấy vòng for đầu tiên không đưa s1 thành chữ hoa được. Mọi người xem giúp mình lỗi nằm ở đâu ? Cảm ơn mọi người

kienonline19 (Nguyen Kien) May 18, 2017, 12:02pm #2

Gọi hàm tốn thời gian bạn thử làm s1[i] += 32 xem sao ?

kienonline19 (Nguyen Kien) May 18, 2017, 12:19pm #3

ý bạn là so sánh về độ dài à ?

#include #include using namespace std; bool SoSanh(string s1, string s2) { for (unsigned int i = 0; i < s1.size(); i++){ if(s1[i] >= 'a' && s1[i] <= 'z'){ s1[i] -= 32; } } for (unsigned int i = 0; i < s2.size(); i++){ if(s2[i] >= 'a' && s2[i] <= 'z'){ s2[i] -= 32; } } if (s1.compare(s2) == 0) { return true; } return false; } int main() { string str1 = "Nguyen Xuan Kien"; string str2 = "Nguyen Xuan"; bool res = SoSanh(str1, str2); res == 1 ? printf("\n Hai chuoi co do dai bang nhau\n") : printf("\n Hai chuoi co do dai khac nhau\n"); return 0; }
yeuhangxom (2D_team_free_online_Education) May 18, 2017, 12:23pm #4

class string trong C++ nó không cần phải chạy vòng for , nó đã tích hợp r , muốn so sánh thì cho if (s1 == s2) return true else return false là được , độ dài là s.lenght(), các hàm đã được định nghĩa sẵn trong thiw viện string của C++ và string.h của C

1 Like
Nguyen_Nhat_Minh (Nhật Minh) May 18, 2017, 3:41pm #5

Ý mình là so sánh 2 chuỗi nó trùng nhau k ấy. Tại có cả trường hợp là số ví dụ như số điện thoại nữa nên mình k dùng +32

yeuhangxom (2D_team_free_online_Education) November 23, 2018, 2:47am #6

Trong C có hỗ trợ hàm so sánh 2 mảng kí tự char là strcmp , trong C++ thì cũng có hàm so sánh , nhưng mình có thể dùng trực tiếp như 2 biến số ,
VD:

string a = "2D team free online education!"; string b = "2D team";

thì so sánh 2 chuỗi string có thể dùng

if (a==b){...} else{...}
1 Like
Duc_Loi (đức Lợi) November 23, 2018, 9:22am #7

C++ có string luôn hả bạn

Hàm so sánh trong C++
Hàm so sánh trong C++
Hàm so sánh trong C++

noname00 (HK boy) November 23, 2018, 2:47am #8

Ý bạn là gì?

https://en.cppreference.com/w/cpp/string/basic_string

2 Likes
An_Nguyen_Truong1 (An Nguyen Truong) July 19, 2020, 6:08am #9

lệnh đấy là chuyển từ hoa thành thường.nếu ghi chữ thường thì chuyển linh tinh j ấy.
Mà touppẻ là chuyển từ thường thành hoa