Bird
Raised Fist0
C++programming~20 mins

String input and output in C++ - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
String Input and Output Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of string input with getline and cin
What is the output of this C++ code when the input is:

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

int main() {
    std::string firstName, lastName;
    std::cin >> firstName;
    std::getline(std::cin, lastName);
    std::cout << "First: " << firstName << ", Last:" << lastName << std::endl;
    return 0;
}
AFirst: John Doe, Last:
BFirst: John, Last: Doe
CFirst: John, Last:
DFirst: John, Last: Doe
Attempts:
2 left
💡 Hint
Remember that std::cin >> reads until space, getline reads until newline including leading spaces.
❓ Predict Output
intermediate
2:00remaining
Output of string concatenation and output formatting
What is the output of this C++ code?
C++
#include <iostream>
#include <string>

int main() {
    std::string s1 = "Hello";
    std::string s2 = "World";
    std::cout << s1 + ", " + s2 + "!" << std::endl;
    return 0;
}
AHello,World!
BHelloWorld!
CHello World!
DHello, World!
Attempts:
2 left
💡 Hint
Look carefully at the commas and spaces in the concatenation.
❓ Predict Output
advanced
2:00remaining
Output of reading multiple words with getline and cin
What is the output of this code if the input is:

Mary Jane Watson
C++
#include <iostream>
#include <string>

int main() {
    std::string first, last;
    std::getline(std::cin, first, ' ');
    std::getline(std::cin, last);
    std::cout << "First: " << first << ", Last: " << last << std::endl;
    return 0;
}
AFirst: Mary, Last: Jane Watson
BFirst: Mary Jane, Last: Watson
CFirst: Mary, Last: Jane
DFirst: Mary Jane Watson, Last:
Attempts:
2 left
💡 Hint
getline with a delimiter reads until that delimiter, not the whole line.
❓ Predict Output
advanced
2:00remaining
Output of mixing cin and getline with leftover newline
What is the output of this code if the input is:

42
Hello World
C++
#include <iostream>
#include <string>

int main() {
    int number;
    std::string text;
    std::cin >> number;
    std::getline(std::cin, text);
    std::cout << "Number: " << number << ", Text: '" << text << "'" << std::endl;
    return 0;
}
ANumber: 42, Text: ''
BNumber: 42, Text: ' Hello World'
CNumber: 42, Text: 'Hello World'
DNumber: 42, Text: '\nHello World'
Attempts:
2 left
💡 Hint
After reading number with >>, the newline remains in the input buffer.
🧠 Conceptual
expert
2:00remaining
Why does mixing cin >> and getline cause issues?
Why does mixing std::cin >> and std::getline often cause unexpected empty string inputs?
ABecause std::cin >> converts input to uppercase, confusing getline.
BBecause std::getline cannot read strings after std::cin >> is used once.
CBecause std::cin >> leaves the newline character in the input buffer, which std::getline reads as an empty line.
DBecause std::getline automatically skips whitespace, causing it to miss input.
Attempts:
2 left
💡 Hint
Think about what happens to the newline character after std::cin >> reads input.

Practice

(1/5)
1. Which C++ statement correctly reads a full line of text including spaces into a string variable named name?
easy
A. std::cin >> name;
B. std::getline(std::cin, name);
C. std::cin.get(name);
D. getline(name, std::cin);

Solution

  1. Step 1: Understand how to read full lines with spaces

    The function std::getline reads an entire line including spaces into a string.
  2. Step 2: Identify correct syntax for reading from standard input

    The correct syntax is std::getline(std::cin, variable), so std::getline(std::cin, name); is correct.
  3. Final Answer:

    std::getline(std::cin, name); -> Option B
  4. Quick Check:

    Full line input = std::getline(std::cin, name) [OK]
Hint: Use std::getline to read full lines with spaces [OK]
Common Mistakes:
  • Using std::cin >> name; reads only until first space
  • Swapping arguments in getline function
  • Using std::cin.get() incorrectly for strings
2. Which of the following is the correct way to print the string variable message to the console in C++?
easy
A. std::cout << message << std::endl;
B. print(message);
C. echo message;
D. console.log(message);

Solution

  1. Step 1: Identify the standard output method in C++

    C++ uses std::cout to print output to the console.
  2. Step 2: Use the insertion operator to print strings

    The correct syntax is std::cout << message << std::endl; to print the string and move to the next line.
  3. Final Answer:

    std::cout << message << std::endl; -> Option A
  4. Quick Check:

    Print string = std::cout << message << std::endl; [OK]
Hint: Use std::cout << variable << std::endl; to print strings [OK]
Common Mistakes:
  • Using print() which is not a C++ function
  • Using echo or console.log which are from other languages
  • Forgetting std:: or << operator
3. What will be the output of the following C++ code?
std::string text;
std::getline(std::cin, text);
std::cout << "You entered: " << text << std::endl;

If the user inputs: Hello World
medium
A. You entered: Hello
B. You entered:
C. Compilation error
D. You entered: Hello World

Solution

  1. Step 1: Understand std::getline input behavior

    std::getline(std::cin, text); reads the entire line including spaces, so it captures "Hello World".
  2. Step 2: Output the stored string

    The output prints "You entered: " followed by the full input string, so it prints "You entered: Hello World".
  3. Final Answer:

    You entered: Hello World -> Option D
  4. Quick Check:

    getline reads full line = You entered: Hello World [OK]
Hint: std::getline reads full line including spaces [OK]
Common Mistakes:
  • Assuming std::cin >> text reads full line
  • Expecting only first word output
  • Thinking code causes compilation error
4. Identify the error in this C++ code snippet that tries to read a string with spaces:
std::string input;
std::cin >> input;
std::cout << input << std::endl;
medium
A. std::string is not a valid type
B. Missing semicolon after std::string input
C. std::cin >> input; reads only until first space, not full line
D. std::cout cannot print strings directly

Solution

  1. Step 1: Understand how std::cin >> works with strings

    std::cin >> input; reads input only until the first whitespace, so it cannot read full lines with spaces.
  2. Step 2: Identify the correct method to read full lines

    To read full lines including spaces, std::getline(std::cin, input); should be used instead.
  3. Final Answer:

    std::cin >> input; reads only until first space, not full line -> Option C
  4. Quick Check:

    std::cin >> string reads until space [OK]
Hint: Use std::getline to read strings with spaces, not std::cin >> [OK]
Common Mistakes:
  • Thinking std::cin >> reads full line
  • Confusing syntax errors with input behavior
  • Believing std::cout cannot print strings
5. You want to read a user's full name (which may contain spaces) and then print a greeting like Hello, [name]!. Which code snippet correctly does this in C++?
hard
A. std::string name; std::getline(std::cin, name); std::cout << "Hello, " << name << "!" << std::endl;
B. std::string name; std::cin >> name; std::cout << "Hello, " << name << "!" << std::endl;
C. char name[50]; std::cin >> name; std::cout << "Hello, " << name << "!" << std::endl;
D. std::string name; getline(name, std::cin); std::cout << "Hello, " << name << "!" << std::endl;

Solution

  1. Step 1: Choose method to read full name with spaces

    Using std::getline(std::cin, name); reads the entire line including spaces, perfect for full names.
  2. Step 2: Print greeting with the name

    std::cout << "Hello, " << name << "!" << std::endl; correctly prints the greeting with the name.
  3. Final Answer:

    std::string name; std::getline(std::cin, name); std::cout << "Hello, " << name << "!" << std::endl; -> Option A
  4. Quick Check:

    Read full line + print greeting = std::string name; std::getline(std::cin, name); std::cout << "Hello, " << name << "!" << std::endl; [OK]
Hint: Use std::getline for full name input, then std::cout to print [OK]
Common Mistakes:
  • Using std::cin >> which stops at first space
  • Swapping arguments in getline function
  • Using char arrays without proper input handling
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