/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
如下代码产生一个console输入循环,接收输入与“password”做比较,一致则跳出循环,不一致则继续接收输入至一致为止。亮点是cin>>getpass>>pw;这句中间加了个方法用以每次在接收输入之前输
出提示消息。注:cin的结束是以回车才能继续下一行代码,如果cin>>a>>b;则识别a,b分开的可以是空格也可以是回车。也即:如果cin>>str;如果输入‘a空格asdf’,则str只是赋值为a而已。
#include <iostream>
#include <cstring>
using namespace std;
istream &getpass(istream &stream)
{
cout << '\a'; // sound bell
cout << "Enter password: ";
return stream;
}
int main()
{
char pw[80];
do {
cin >> getpass >> pw;
} while (strcmp(pw, "password"));
cout << "Logon complete\n";
return 0;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
getline的用法
<一>cin.getline()
char name[80] = {'J', 'e', 'f', 'f', '/0' };
cout << "Enter your name: ";
cin.getline(name, 80);
cout << "Your name is " << name;
可做到一直接收输入并复制给name变量,默认的结束符号为回车,如果变为cin.getline(name,80,'!');则结束接收流的符号变为'!',如果这时输入中带有回车,则会一并收入name中,并能显示回车
换行在屏幕上作为输出name的一部分。
<二>getline( cin, rest, '!');
string word, rest;
cout << header << "Press <return> to go on" << endl;
cin.get(); // Read the new line without saving.
cout << "\nEnter a sentence! End with <!> and <return>." << endl;
cin >> word; // Read the first word
getline( cin, rest, '!'); // read a line up to the character !
cout << "The first word: " << word << endl
<< "Remaining text: " << rest << endl;
getline( cin, rest, '!');这条语句讲输入流的都赋值给rest变量,识别结束符为‘!’,这个可以自己设置结束符的,若不设置为回车,则可以正常接收回车并显示。