#include <iostream>
int main()
{
using namespace std;
cout << "What year was your house built?\n";
int year;
cin >> year;
cout << "What is its street address?\n";
char address[80];
cin.getline(address, 80);
cout << "Year built: " << year << endl;
cout << "Address: " << address << endl;
cout << "Done!\n";
return 0;
}
It doesn't give me time to type address..
output is something like this
Code:
What year was your house built?
1966
What is its street address?
Year built: 1966
Address
Done!
Why it doesn't ask for address?
Answer; after giving to inti_g_er as we press "Enter key" there comes a new line character in input queue that is transfered to address.. that's why it is not give us time to type address..
OK...
but what if i assign address as a char(just as an experiment since address can't be a character)
Code:
#include <iostream>
#include<cstring>
int main()
{
using namespace std;
cout << "What year was your house built?\n";
int year;
cin >> year;
cout << "What is its street address?\n";
char address;
cin>>address;
cout << "Year built: " << year << endl;
cout << "Address: " << address << endl;
cout << "Done!\n";
return 0;
}
this time it asks for address variable...
Code:
What year was your house built?
1966
What is its street address? P
Year built: 1966
Address P
Done!
why new line character is not transferred to address variable in this case???????????????????
In the first case, you use getline(). getline() processes input until a '\n'
is encountered. So after entering the year (followed by return), the '\n'
is still in the input stream buffer, so addess ends up empty (as you observed).
In the second case, you are using operator >> ... By default, operator >>
ignores whitespaces, so the fact that the '\n' is still in the input buffer
stream is not relevant.
In the first case, you use getline(). getline() processes input until a '\n'
is encountered. So after entering the year (followed by return), the '\n'
is still in the input stream buffer, so addess ends up empty (as you observed).
In the second case, you are using operator >> ... By default, operator >>
ignores whitespaces, so the fact that the '\n' is still in the input buffer
stream is not relevant.
so you mean if we get very next input by >>(after cin.getline) operator then no such probem will appear..
so you mean if we get very next input by >>(after cin.getline) operator then no such probem will appear..
In general, yes. Consequently, one method to avoid this kind of problem is to read line by line into strings, then parse the line, e.g., with the help of a stringstream.
C + C++ Compiler: MinGW port of GCC
Build + Version Control System: SCons + Bazaar
Bookmarks