Bird
Raised Fist0
C++programming~10 mins

Character vs string comparison in C++ - Visual Side-by-Side Comparison

Choose your learning style10 modes available
Concept Flow - Character vs string comparison
Start
↓
Define char c = 'a'
↓
Define string s = "a"
↓
Compare c == s
↓
Error or False
↓
Compare c == s[0
↓
True
↓
End
This flow shows defining a character and a string, then comparing them directly (which fails) versus comparing the character to the first character of the string (which works).
Execution Sample
C++
char c = 'a';
std::string s = "a";

if (c == s) {
    std::cout << "Equal";
} else {
    std::cout << "Not equal";
}
This code tries to compare a char and a string directly, which is invalid in C++ and will not compile.
Execution Table
StepActionEvaluationResult
1Define char c = 'a'c = 'a'c holds character 'a'
2Define string s = "a"s = "a"s holds string "a"
3Compare c == schar vs string comparisonCompilation error (invalid)
4Compare c == s[0]Compare 'a' == 'a'True
💡 Direct char and string comparison is invalid; comparing char to string's first character works.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 4
cundefined'a''a''a'
sundefinedundefined"a""a"
s[0]undefinedundefined'a''a'
Key Moments - 2 Insights
Why can't we compare a char directly to a string?
Because a char holds a single character, while a string holds multiple characters; they are different types. The execution_table row 3 shows this causes a compilation error.
How can we compare a char to a string's content?
By comparing the char to the string's first character using s[0], as shown in execution_table row 4, which evaluates to true if they match.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what happens when we compare c == s directly?
AIt returns false
BCompilation error
CIt returns true
DIt compares the first character only
💡 Hint
Check execution_table row 3 for the result of c == s comparison.
At which step does comparing c to s[0] happen and what is the result?
AStep 4, true
BStep 3, false
CStep 2, error
DStep 1, true
💡 Hint
See execution_table row 4 for the comparison of c == s[0].
If s was "b" instead of "a", what would be the result of c == s[0]?
ATrue
BCompilation error
CFalse
DDepends on compiler
💡 Hint
Refer to variable_tracker for c and s[0] values and their comparison logic.
Concept Snapshot
In C++, a char holds one character, a string holds many.
You cannot compare char == string directly (compilation error).
Compare char to string's first character: c == s[0].
This compares two chars and works as expected.
Always match types when comparing.
Full Transcript
This example shows that in C++, a character variable and a string variable are different types. Trying to compare them directly causes a compilation error because the compiler cannot compare a single character to a whole string. Instead, you can compare the character to the first character of the string using s[0]. This works because both are characters. The execution table shows the steps: defining variables, attempting invalid comparison, and then a valid comparison. The variable tracker shows how values change. Key moments clarify why direct comparison fails and how to do it correctly. The quiz tests understanding of these points.

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