Similarities
When used as conditions in while loops, both cin and getline() share a common termination character: Ctrl+D (or Ctrl+Z on Windows). Both loops continue executing as long as input is being provided.
std::string word;
while (std::cin >> word) {
std::cout << "Input received: " << word << std::endl;
}
std::string line;
while (std::getline(std::cin, line)) {
std::cout << "Input received: " << line << std::endl;
}
Key Differences
cin Operator
The extraction operator >> reads only up to the first whitespace character. This means spaces, tabs, and newline characters act as delimiters.
When input like "John Doe" is provided, the string variable captures only "John", leaving "Doe" in the input buffer for the next extraction operation.
#include <iostream>
#include <string>
int main() {
std::string firstName;
std::string lastName;
std::cout << "Enter your first name: ";
std::cin >> firstName;
std::cout << "Enter your last name: ";
std::cin >> lastName;
std::cout << "Full name: " << firstName << " " << lastName << std::endl;
return 0;
}
Sample output:
Enter your first name: John Doe Enter your last name: Full name: John Doe
When using a while loop with cin >>, each whitespace-separated token triggers a new iteration:
std::string token;
while (std::cin >> token) {
std::cout << "Token: " << token << std::endl;
}
Input "Hello World" produces two separate outputs.
getline() Function
The getline() function reads the entire line including spaces and tabs, stopping only at the newline chaarcter.
#include <iostream>
#include <string>
int main() {
std::string fullName;
std::string location;
std::cout << "Enter your full name: ";
std::getline(std::cin, fullName);
std::cout << "Enter your location: ";
std::getline(std::cin, location);
std::cout << "Hello, " << fullName << std::endl;
std::cout << "Location: " << location << std::endl;
return 0;
}
Sample output: Enter your full name: John Doe Enter your location: New York Hello, John Doe Location: New York
Summary
Choose cin >> when you need to extract individual whitespace-separated words. Choose getline() when you need to capture complete lines including spaces.
For input containing no whitespace, both methods produce identical results.