Oh2
Oh2

Reputation: 127

Why it works when I type multiple characters in a character variable?

I am a new C++ user. My code is as following:

#include <iostream>
using namespace std;
int main()
{
   int option = 1;
   char abstract='a';
   while(option == 1){
     char temp;
     cin>> temp;
     abstract = temp;
     cout << abstract;
     option = 1;
     if(abstract == '!'){
         option = 0;
     }
  }
  return 0;
}

And when I typed something like: abcdefg all the characters are on the screen,why? It's just because of the compiler?

Upvotes: 1

Views: 103

Answers (4)

kehindesalaam
kehindesalaam

Reputation: 45

Your terminal does not restrict the number of characters typed in , that's why you can type as many as you want. Your c++ compiler would read only one of the characters because 'temp' is of type char. you can type an 'if' statement to check the number of characters typed in the terminal

Upvotes: 1

anderas
anderas

Reputation: 5844

In fact, only one character at a time is stored in your char. cin>>temp; reads a single char at a time since more characters would not fit there. The loop simply reads and prints one character after the other.

As a visualization hint, try echoing your characters with cout<<abstract<<endl;. You will see a single character per line/iteration.

Upvotes: 1

Ernest Friedman-Hill
Ernest Friedman-Hill

Reputation: 81684

The terminal window itself is responsible for reading the characters and echoing them back to the screen. Your C++ program asks the terminal for characters and, in this sort of program at least, has no effect on how those characters are displayed.

Upvotes: 0

unwind
unwind

Reputation: 399803

Because of the while loop, which processes each character in turn. Not sure what you expected to happen.

Print it out with delimiters to see that there's never more than a single character printed per iteration:

cout << "'" << abstract << "'";

Upvotes: 0

Related Questions