Giới thiệuChúng ta có nhiều cách để so sánh chuỗi trong môi trường lập trình Arduino. Trong đó, ta có thể dùng các toán tử như \>=, <=, <, \>, \= hoặc sử dụng các hàm của thư viện String như equals(), equalsIgoreCase(). Việc so sánh chuỗi là việc so sánh mã của ký tự khác nhau đầu tiên của cả 2 chuỗi. Ví dụ, '1' < '2', 'a' < 'b', '999' > '1000' (vì ký tự đầu tiên khác nhau của 2 chuỗi đó nằm ở vị trí thứ 0 và ký tự '9' trong mã ASCII có giá trị lớn hơn ký tự '1'). Lưu ý: Chúng ta rất dễ bị nhầm lẫn rằng việc so sánh chuỗi số cũng chính là so sánh số. Điều này không chính xác (ví dụ trên), và vì vậy ta cần phải cẩn thận khi so sánh các chuỗi số. Và điều đơn giản nhất đó là việc ta chuyển số các chuỗi số ấy thành số ở các kiểu như int, float, long,... Bây giờ hãy gắn Arduino vào máy tính và upload đoạn code sau và rút kinh nghiệm của riêng mình! Lập trìnhString stringOne, stringTwo;
void setup() {
// Mở cổng Serial với mức baudrate 9600
Serial.begin(9600);
while (!Serial) { ; // đợi khi nào cổng Serial được bật (chỉ cần thiết đối với mạch Leonardo)
}
stringOne = String("this");
stringTwo = String("that");
}
void loop() {
// so sánh 2 chuỗi có bằng nhau hay không (cách 1)
if (stringOne == "this") {Serial.println("StringOne == \"this\"");
}
// nếu 2 chuỗi khác nhau
if (stringOne != stringTwo) {Serial.println(stringOne + " =! " + stringTwo);
}
// trường hợp 2 từ cùng 1 nghĩa nhưng cách viết khác nhau (hoa, thường)
stringOne = "This";
stringTwo = "this";
//Vì viết khác định dạng nên khi so sánh, 2 chuỗi này sẽ không bằng nhau
if (stringOne != stringTwo) {Serial.println(stringOne + " =! " + stringTwo);
}
// Bạn có thể dùng hàm equals để kiểm tra 2 chuỗi có giống (bằng) nhau hay không
if (stringOne.equals(stringTwo)) {Serial.println(stringOne + " equals " + stringTwo); //equals nghĩa là bằng
}
else {Serial.println(stringOne + " does not equal " + stringTwo); // does not equal nghĩa là không bằng
}
// hoặc trong trường hợp bạn muốn kiểm tra 2 chuỗi có bằng nhau hay không mà không phân biệt hoa thường
if (stringOne.equalsIgnoreCase(stringTwo)) {Serial.println(stringOne + " equals (ignoring case) " + stringTwo); //bằng (không phân biệt hoa thường)
} else {Serial.println(stringOne + " does not equal (ignoring case) " + stringTwo); // không bằng (không phân biệt hoa thường)
}
// một chuỗi số nguyên có thể so sánh với 1 số nguyên bằng cách...
stringOne = "1";
int numberOne = 1;
if (stringOne.toInt() == numberOne) {Serial.println(stringOne + " = " + numberOne);
}
// so sánh 2 chuỗi số nguyên
stringOne = "2";
stringTwo = "1";
if (stringOne >= stringTwo) {Serial.println(stringOne + " >= " + stringTwo);
}
// các toán tử so sánh cũng có thể dùng để so sánh 2 chuỗi
stringOne = String("Brown");
if (stringOne < "Charles") {Serial.println(stringOne + " < Charles");
}
if (stringOne > "Adams") {Serial.println(stringOne + " > Adams");
}
if (stringOne <= "Browne") {Serial.println(stringOne + " <= Browne");
}
if (stringOne >= "Brow") {Serial.println(stringOne + " >= Brow");
}
// hàm compareTo() dùng để so sánh 2 chuỗi
// nó sẽ trả về 1 số nguyên là vị trí đầu tiên (tính từ bên trái)
// khác nhau giữa 2 chuỗi.
// số nguyên nó là số âm nếu chuỗi A bé hơn chuỗi B
// là số dương nếu chuỗi A lớn hơn chuỗi B
// và bằng 0 khi 2 chuỗi bằng nhau.
stringOne = "Cucumber";
stringTwo = "Cucuracha";
if (stringOne.compareTo(stringTwo) < 0 ) {Serial.println(stringOne + " be hon " + stringTwo);
}
else {Serial.println(stringOne + " lon hon " + stringTwo);
}
while (true) {} //dừng chương trình không chạy tiếp nữa
}C++
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
2 có sẵn các hàm để thao tác dữ liệu của loại
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
2. Hàm
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Unmatch";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
8 là một hàm trong thư viện C được sử dụng để so sánh hai chuỗi theo cách từ điển. cú pháp strcmp()
- Chuỗi đầu vào phải là một mảng
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
5 của Chuỗi kiểu C. Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
6 cũng so sánh các chuỗi ở dạng phân biệt chữ hoa chữ thường.
int strcmp(const char *str1, const char *str2);
Hàm này trả về các giá trị sau theo các trường hợp phù hợp: - Trả về
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
7 nếu cả hai chuỗi giống nhau. - Trả về
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
8 (nhỏ hơn 0) nếu giá trị của ký tự của chuỗi đầu tiên nhỏ hơn so với giá trị của chuỗi đầu vào thứ hai. - Kết quả là
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
9 (lớn hơn 0) khi chuỗi thứ hai lớn hơn khi so sánh.
strcmp() Ví dụ 1Chạy đoạn mã sau:
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Unmatch";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
Điều này sẽ tạo ra đầu ra sau:
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
0 dẫn đến
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
1. Các giá trị của
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
2 và
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
3 là khác nhau. strcmp() Ví dụ 2Chạy đoạn mã sau:
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
Điều này sẽ tạo ra đầu ra sau:
Output
String 1: String Match
String 2: String Match
Both the input strings are equal.
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
0 dẫn đến
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
7. Giá trị của
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
2 và
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
3 giống nhau. 2. Sử dụng hàm so sánh() trong C++C++ có hàm
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
8 tích hợp để so sánh hai chuỗi. so sánh() Cú phápHàm
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
8 so sánh hai chuỗi:
int compare (const string& string-name) const;
Hàm này trả về các giá trị sau theo các trường hợp phù hợp: - Trả về
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
7 nếu cả hai chuỗi giống nhau. - Trả về
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
8 (nhỏ hơn 0) nếu giá trị của ký tự của chuỗi đầu tiên nhỏ hơn so với giá trị của chuỗi đầu vào thứ hai. - Kết quả là
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
9 (lớn hơn 0) khi chuỗi thứ hai lớn hơn khi so sánh.
Ví dụ 1: Sử dụng so sánh()Chạy đoạn mã sau:
# include <iostream>
int main()
{
std::string str_inp1("String Match");
std::string str_inp2("String Match");
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
int res = str_inp1.compare(str_inp2);
if (res == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else if (res < 0)
std::cout << "\nString 1 is smaller as compared to String 2." << std::endl;
else
std::cout << "\nString 1 is greater as compared to String 2." << std::endl;
}
Trong ví dụ này,
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
2 và
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
3 được so sánh với
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
8:
Output
String 1: String Match
String 2: String Match
Both the input strings are equal.
Cả hai chuỗi đều giống nhau về mặt từ điển, vì vậy hàm trả về
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
7. Ví dụ 2: Sử dụng so sánh()Chạy đoạn mã sau:
# include <iostream>
int main()
{
std::string str_inp0("String Match");
std::string str_inp1("String Match");
std::string str_inp2("String Unmatch");
std::cout << "String 1: " << str_inp1 << std::endl;
if (str_inp1.compare(str_inp0) == 0)
std::cout << "\nStrings are equal." << std::endl;
else
std::cout << "\nStrings are not equal." << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (str_inp2.compare(str_inp0) == 0)
std::cout << "\nStrings are equal." << std::endl;
else
std::cout << "\nStrings are not equal." << std::endl;
}
Trong ví dụ này,
Output
String 1: String Match
String 2: String Match
Both the input strings are equal.
7 được so sánh với
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
2:
Output
String 1: String Match
Strings are equal.
Sau đó,
Output
String 1: String Match
String 2: String Match
Both the input strings are equal.
7 được so sánh với
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
3:
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Unmatch";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
0 Đoạn mã này so sánh trực tiếp một chuỗi với một chuỗi đầu vào khác với hàm
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
8. 3. Toán tử quan hệ trong C++Các toán tử quan hệ trong C++ như
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
0 (bằng kép) và
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
1 (không bằng) có thể hữu ích trong việc so sánh các chuỗi. Toán tử quan hệ Cú phápKiểm tra xem hai giá trị có bằng nhau không:
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Unmatch";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
1 Kiểm tra xem hai giá trị có khác nhau không:
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Unmatch";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
2 Ví dụ 1: Sử dụng toán tử == trong C++Chạy đoạn mã sau:
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Unmatch";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
3 Cung cấp giá trị cho \Chuỗi 1” và \Chuỗi 2”:
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Unmatch";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
4 Mã này sẽ so sánh hai chuỗi với
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
0. Ví dụ 2: Sử dụng toán tử != của C++Chạy đoạn mã sau:
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Unmatch";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
5 Cung cấp giá trị cho \Chuỗi 1” và \Chuỗi 2”:
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Unmatch";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
6 Mã này sẽ so sánh hai chuỗi với
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
1. Phần kết luậnTrong bài viết này, bạn đã học các phương pháp so sánh chuỗi trong C++. Điều này bao gồm hàm
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
2 của
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
6, hàm
# include <iostream>
# include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}
8 tích hợp sẵn và các toán tử quan hệ (
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
0,
Output
String 1: String Match
String 2: String Unmatch
The input strings are not equal.
1). |