01/10/2018, 09:43

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…

Nguyen Kien viết 11:52 ngày 01/10/2018

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

Nguyen Kien viết 11:54 ngày 01/10/2018

ý 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;
}
2D_team_free_online_Education viết 11:59 ngày 01/10/2018

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

Nhật Minh viết 11:49 ngày 01/10/2018

Ý 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

2D_team_free_online_Education viết 11:49 ngày 01/10/2018

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{…}

Bài liên quan
0