So sánh xâu kí tự c++ năm 2024

Giới thiệu

Chú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ình

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

So sánh xâu kí tự c++ năm 2024

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ụ 1

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

Đ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ụ 2

Chạ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áp

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 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áp

Kiể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ận

Trong 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).