Bird
Raised Fist0
C++programming~5 mins

Character vs string comparison in C++

Choose your learning style10 modes available
Introduction

We compare characters and strings to check if they are the same or different. Characters are single letters, while strings are groups of letters.

Checking if a typed letter matches a specific character, like 'y' or 'n'.
Comparing user input to a word, like checking if input is "yes" or "no".
Validating a single character in a password or code.
Deciding actions based on a single letter or a whole word.
Syntax
C++
char c = 'a';
std::string s = "a";

// Compare character to character
if (c == 'a') {
    // do something
}

// Compare string to string
if (s == "a") {
    // do something
}

// Comparing char to string directly is not allowed
// if (c == s) { // error }

// To compare char and string, convert char to string first
if (std::string(1, c) == s) {
    // do something
}

Characters use single quotes: 'a'. Strings use double quotes: "a".

You cannot compare a char and a string directly in C++ without conversion.

Examples
Compare a character variable to a character literal.
C++
char c = 'x';
if (c == 'x') {
    // true
}
Compare a string variable to a string literal.
C++
std::string s = "hello";
if (s == "hello") {
    // true
}
Convert char to string to compare with a string.
C++
char c = 'a';
std::string s = "a";
if (std::string(1, c) == s) {
    // true
}
Sample Program

This program shows how to compare a character to a character literal, a string to a string literal, and how to compare a character to a string by converting the character to a string first.

C++
#include <iostream>
#include <string>

int main() {
    char c = 'g';
    std::string s = "g";

    if (c == 'g') {
        std::cout << "Character matches 'g'\n";
    }

    if (s == "g") {
        std::cout << "String matches \"g\"" << std::endl;
    }

    // Direct comparison (char == string) is not allowed
    // So convert char to string first
    if (std::string(1, c) == s) {
        std::cout << "Char and string are equal after conversion" << std::endl;
    }

    return 0;
}
OutputSuccess
Important Notes

Remember to use single quotes for characters and double quotes for strings.

Trying to compare a char and a string directly will cause a compile error in C++.

Use std::string(1, c) to convert a char to a string of length 1.

Summary

Characters and strings are different types in C++.

You can compare characters to characters and strings to strings directly.

To compare a character with a string, convert the character to a string first.

Practice

(1/5)
1.

Which of the following correctly compares a character ch with another character 'a' in C++?

easy
A. if (ch == string('a'))
B. if (ch == "a")
C. if (ch == 'a')
D. if (ch == char("a"))

Solution

  1. Step 1: Understand character vs string literals

    Characters use single quotes like 'a', strings use double quotes like "a".
  2. Step 2: Compare character with character

    Comparing ch (char) with 'a' (char) is valid and correct.
  3. Final Answer:

    if (ch == 'a') -> Option C
  4. Quick Check:

    char == char comparison works directly [OK]
Hint: Use single quotes for chars, double quotes for strings [OK]
Common Mistakes:
  • Using double quotes to compare char and string
  • Trying to convert char to string incorrectly
  • Confusing char and string types
2.

Which of the following is the correct syntax to compare a char variable c with a std::string variable s in C++?

easy
A. if (c == s)
B. if (string(1, c) == s)
C. if (c == s[0])
D. if (c == char(s))

Solution

  1. Step 1: Recognize type mismatch

    Directly comparing char and std::string is invalid.
  2. Step 2: Convert char to string for comparison

    Use string(1, c) to create a string from the char, then compare with s.
  3. Final Answer:

    if (string(1, c) == s) -> Option B
  4. Quick Check:

    Convert char to string before comparing with string [OK]
Hint: Convert char to string with string(1, c) before comparing [OK]
Common Mistakes:
  • Comparing char directly with string
  • Trying to cast string to char
  • Using s[0] without checking string length
3.

What will be the output of the following C++ code?

char ch = 'x';
std::string str = "x";
if (ch == str) {
    std::cout << "Equal";
} else {
    std::cout << "Not Equal";
}
medium
A. Compilation error
B. Equal
C. Not Equal
D. Runtime error

Solution

  1. Step 1: Analyze comparison types

    Comparing char and std::string directly is not allowed in C++.
  2. Step 2: Check compilation rules

    This causes a compilation error because no operator== exists for char and string.
  3. Final Answer:

    Compilation error -> Option A
  4. Quick Check:

    char == string causes compile error [OK]
Hint: char and string can't be compared directly; causes compile error [OK]
Common Mistakes:
  • Assuming char and string compare equal
  • Expecting runtime error instead of compile error
  • Ignoring type mismatch in comparison
4.

Identify the error in the following code snippet and choose the correct fix:

char c = 'b';
std::string s = "b";
if (c == s[0]) {
    std::cout << "Match";
}
medium
A. No error, code works correctly
B. Change s[0] to s
C. Convert c to string before comparison
D. Use c == s.at(1) instead

Solution

  1. Step 1: Understand types in comparison

    c is a char, s[0] is a char (first character of string).
  2. Step 2: Check if comparison is valid

    Comparing two chars is valid and works correctly.
  3. Final Answer:

    No error, code works correctly -> Option A
  4. Quick Check:

    char == s[0] compares chars correctly [OK]
Hint: Compare char with s[0] to compare characters safely [OK]
Common Mistakes:
  • Trying to compare char with whole string
  • Using s.at(1) which may be out of range
  • Converting char to string unnecessarily
5.

You want to check if a char variable ch matches any character in a std::string variable word. Which of the following is the best way to do this in C++?

hard
A. if (ch == word)
B. if (word == string(1, ch))
C. if (ch == word[0])
D. if (word.find(ch) != std::string::npos)

Solution

  1. Step 1: Understand the goal

    We want to check if ch appears anywhere inside word.
  2. Step 2: Use string find method

    word.find(ch) returns position of ch or std::string::npos if not found.
  3. Step 3: Check if found

    If result is not npos, ch is in word.
  4. Final Answer:

    if (word.find(ch) != std::string::npos) -> Option D
  5. Quick Check:

    Use string::find to check char in string [OK]
Hint: Use word.find(ch) != npos to check char in string [OK]
Common Mistakes:
  • Comparing whole string to single char
  • Checking only first character with word[0]
  • Converting char to string and comparing whole string
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard