So sánh chuỗi trong C++

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…

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

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

#include <stdio.h>
#include <string>

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;
}

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

Ý 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

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

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

Ý bạn là gì?

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

2 Likes

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

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