cin与hex、oct、dec控制符一起使用,按进制输入
#include <iostream>
using namespace std;
int main()
{
int temp;
// 按16进制输入
// 输入12
cin >> hex;
cin >> temp;
// 按16进制输出
// cout << hex;
// 输出18
cout << temp;
return 0;
}
使用c风格字符串输入
输入单词
istream还为下列字符指针类型重载了>>运算符:
- signed char *
- char *
- unsigned char *
对于这种类型的参数,抽取运算符将读取输入中的下一个单词,将它放置到指定的地址,并加上一个空值字符,使之成为一个字符串。
#include <iostream>
using namespace std;
int main()
{
char name[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g'};
// 输入"qwer",如果输入的长度超过数组的长度和报错。
cin >> name;
// 输出"qwer fg"
for (int i = 0; i < 7; i++)
{
cout << name[i];
}
cout << endl;
// 输出"qwer"
cout << name << endl;
return 0;
}
输入字符
>>运算符在查看输入流时,他们跳过空白,直到遇到非空白。它读取从非空白字符开始,到与目标类型不匹配的第一个字符之间的全部内容。如果没有这个内容,cin将返回0,这可用于while判断cin输入。
#include <iostream>
using namespace std;
int main()
{
char name[20];
int a;
char c;
// 输入"stoic 100 blaise"
cin >> name >> a >> c;
// 输出b,100被存到a中后,跳过了空白
cout << c << endl;
return 0;
}
istream类的一些其他方法:
- get(char &)和get(void)提供不跳过空白的单字符输入功能。
- get(char*, int, char)和getline(char*, int, char)读取整行。
//get(char &)的返回值为istream对象的引用,遇到文件结束将返回false
char ch, cl;
cin.get(ch).get(cl);
//get(void)的返回值为int,遇到文件结束将返回EOF
char ch = cin.get();
输入行
istream中的类(如cin)提供了一些面向行的类成员函数:getline()和get()。这两个函数都读取一行,直到换行符。然而,随后getline()将丢弃换行符,而get()将换行符保留在输入序列中。这两个方法还可以接受第三个参数,作为分隔符。
char line[50];
// 读取49个字符或换行后结束。
cin.get(line, 50);
使用string输入
// 输入单词
string str;
cin >> str;
// 输入行
getline(cin, str);