[c++ primer plus]使用标准流格式化输入
2007-10-22 12:22
309 查看
标准流常用有.good(), .bad(), .fail(), .eof()成员函数,可以执行它们查看状态。如果发生错误可以执行.clear()清除。
1. cin >> x 用作输入
int i, j;
cin >> i >> j;
从控制台输入时,变量与变量之间的间隔可以靠'/n', '/t', '/r', '/f'等识别出来,从而把输入值送入到不同的变量中。这个间隔的识别与Perl的%s相同。这种分界的间隔就是:将其作为参数调用isspace()时,返回true的字符,即0x09~0x0D, 0x20。
如果输入的格式与要求的不一致,如cin >> i; 输入“aa",那么cin会发生状态错误。
2. getline()用作输入
cin.getline(char* pch, int nCount, char delim = ' /n' );
读取一行数据,并从标准流中抛弃回车换行符。如果读取是空行(只有回车换行符),则cin状态成功,只是pch读符号为空。
getline(istream& cin, string& str, char delim = '/n');
getline既可以作为cin的成员函数,也可以作为全局函数,把数据从cin中读到string中。保持两个版本的原因是:在引入string类之前,c++就有了istream类。在设计istream时,考虑到了char, double, int和其它基本类型,有相应的类方法(成员函数)。但是对于string,getline(cin, string& str, char delim = '/n'),cin >> string,等都是采用友元实现的。友元函数调用是当然采用全局的方式。
3. get()用作输入
cin.get( char* pch, int nCount, char delim = ' ' );
读取一段数据(以换行符结束一次读取),且不从标准流中抛弃回车换行符。如果读取的是空行
(只有回车换行符),则cin状态出错。
int get();&
istream& get( char& rch );
读取一个字符,这两个函数可以用来读取' ',cin状态不出错。可以跟在get(char* pch, int nCount,
char delim = ' ')后面,以跳过' '字符。
4. istream的类型转换函数
while (!cin.fail())
...{
int i;
cin >> i;
cout << i;
}
istream有到bool型的类型转换函数,上面的函数可以写为:
while (cin) // while successful
...{
int i;
cin >> i;
cout << i;
}
这样比!cin.fail()或!cin.eof()更通用,因为它可以检查到其它错误,但不能定位具体哪一类具体原因。
5. How to use ifstream::get() like fscanf()?
转换一下,然后用sscanf或fscanf读取?
int sscanf( const char *buffer, const char *format [, argument ] ... );
int fscanf( FILE *stream, const char *format [, argument ]... );
或者,直接使用 >> 读取
ifstream >> xx;
1. cin >> x 用作输入
int i, j;
cin >> i >> j;
从控制台输入时,变量与变量之间的间隔可以靠'/n', '/t', '/r', '/f'等识别出来,从而把输入值送入到不同的变量中。这个间隔的识别与Perl的%s相同。这种分界的间隔就是:将其作为参数调用isspace()时,返回true的字符,即0x09~0x0D, 0x20。
如果输入的格式与要求的不一致,如cin >> i; 输入“aa",那么cin会发生状态错误。
2. getline()用作输入
cin.getline(char* pch, int nCount, char delim = ' /n' );
读取一行数据,并从标准流中抛弃回车换行符。如果读取是空行(只有回车换行符),则cin状态成功,只是pch读符号为空。
getline(istream& cin, string& str, char delim = '/n');
getline既可以作为cin的成员函数,也可以作为全局函数,把数据从cin中读到string中。保持两个版本的原因是:在引入string类之前,c++就有了istream类。在设计istream时,考虑到了char, double, int和其它基本类型,有相应的类方法(成员函数)。但是对于string,getline(cin, string& str, char delim = '/n'),cin >> string,等都是采用友元实现的。友元函数调用是当然采用全局的方式。
3. get()用作输入
cin.get( char* pch, int nCount, char delim = ' ' );
读取一段数据(以换行符结束一次读取),且不从标准流中抛弃回车换行符。如果读取的是空行
(只有回车换行符),则cin状态出错。
int get();&
istream& get( char& rch );
读取一个字符,这两个函数可以用来读取' ',cin状态不出错。可以跟在get(char* pch, int nCount,
char delim = ' ')后面,以跳过' '字符。
4. istream的类型转换函数
while (!cin.fail())
...{
int i;
cin >> i;
cout << i;
}
istream有到bool型的类型转换函数,上面的函数可以写为:
while (cin) // while successful
...{
int i;
cin >> i;
cout << i;
}
这样比!cin.fail()或!cin.eof()更通用,因为它可以检查到其它错误,但不能定位具体哪一类具体原因。
5. How to use ifstream::get() like fscanf()?
转换一下,然后用sscanf或fscanf读取?
int sscanf( const char *buffer, const char *format [, argument ] ... );
int fscanf( FILE *stream, const char *format [, argument ]... );
或者,直接使用 >> 读取
ifstream >> xx;
相关文章推荐
- [学习笔记][C++Primer Plus]使用cout格式化输出字符串,3q xuzhong
- [学习笔记][C++Primer Plus]使用cout格式化输出字符串
- [c++ primer plus]使用cout格式化输出
- 《C++ Primer Plus(第六版)》(42)(第十七章 输入、输出和文件 编程练习和答案2)
- C Primer Plus 5th 翻译 第四章:字符串和格式化输入/输出(三)
- (学习)C Primer Plus(3)——字符串和格式化输入/输出
- 【C语言学习】《C Primer Plus》第4章 字符串和格式化输入/输出
- c++primer plus第十七章-cin输入、cout输出和文件I/O
- C Primer Plus 5th 翻译 第四章:字符串和格式化输入/输出(二)
- C++ Primer Plus 第17章 输入,输出和文件
- c++ primer plus 第十七章 输入 输出 文件 IO iostream fstream
- 【读书笔记:C++ primer plus 第六版 中文版】第17章 输入、输出和文件
- 内联函数inline的使用探索(来自C++primer plus)
- 《C++ Primer Plus(第六版)》(18)(第十一章 使用类 笔记)
- C Primer Plus 第4章 字符串和格式化输入输出4.4 printf()和scanf()
- 《C++ Primer Plus(第六版)》(39)(第十七章 输入、输出和文件 笔记2)
- 《C++ Primer Plus(第六版)》(41)(第十七章 输入、输出和文件 编程练习和答案1)
- c primer plus 5 ch4 字符串和格式化输入/输出
- C Primer Plus 5th 翻译 第四章:字符串和格式化输入/输出(一)
- C Primer Plus 5th 翻译 第四章:字符串和格式化输入/输出(二)