`
网络接口
  • 浏览: 43403 次
文章分类
社区版块
存档分类
最新评论

C++容易忽略的输入输出特性

阅读更多

1 cin  cout cin.get() cin.get(ch)的返回值

(1)cin ,cout 就不用多说了还是返回一个iostream对象,因此它们可以这么使用。

cin >> var1 >> var2 >>var3;

cout << var1 << var2 <

cin.get() 没有参数时,返回值是一个整数,所以通常这么用

while((ch=cin.get()) != EOF)

{

      cout << ch;

}

 

cin.get(ch)代参数时,返回的也是一个iostream对象,因此可以这么用

cin.get(a).get(b).get(c);

 

2 cin.get(buffer, num, terminate)  cin.getline(buffer, num, terminate)的区别

 

注:terminate 一般为 '\n'

 

二者都是每次读取一行字符,或是碰到ternimate指定的字符终止或是读的字符数超过num - 1终止。

区别是cin.get会把terminate留在缓冲区中,因此下次读到的第一个字符就是terminate字符,相反,cin.getline()则会丢弃缓冲区中的terminate字符。

 

#include

using namespace std;

int main()

{

   char stringOne[255];

   char stringTwo[255];

   cout << “Enter string one:”;

   cin.get(stringOne,255);

   cout << “String one: “ << stringOne << endl;

   cout << “Enter string two: “;

   cin.getline(stringTwo,255);

   cout << “String two: “ << stringTwo << endl;

   cout << “\n\nNow try again...\n”;

   cout << “Enter string one: “;

   cin.get(stringOne,255);

   cout << “String one: “ << stringOne<< endl;

   cin.ignore(255,’\n’);

   cout << “Enter string two: “;

   cin.getline(stringTwo,255);

   cout << “String Two: “ << stringTwo<< endl;

   return 0;

}

 

看输入输出结果:

Enter string one:once upon a time

String one: once upon a time

Enter string two: String two:

Now try again...

Enter string one: once upon a time

String one: once upon a time

Enter string two: there was a

String Two: there was a

 

3 两个比较有用的函数:peek(), putback() 和 ignore()

 

cin.peek(ch);   忽略字符ch

cin.putback(ch);  把当前读到的字符替换为ch

cin.ignore(num, ch); 从当前字符开始忽略num个字符,或是碰到ch字符开始,并且把ch字符丢丢掉。

 

#include

using namespace std;

int main()

{

   char ch;

   cout << “enter a phrase: “;

   while ( cin.get(ch) != 0 )

   {

      if (ch == ‘!’)

         cin.putback(‘$’);

      else

         cout << ch;

      while (cin.peek() == ‘#’)

         cin.ignore(1,’#’);

   }

   return 0;

}

 

输入输出结果:

enter a phrase: Now!is#the!time#for!fun#!

Now$isthe$timefor$fun$

 

4 cout.put() cout.write()

与输入相同,cout.put(ch) 返回一个iosream对象,因此可以连续使用

cout.write(text,num)  输出text中的num个字符,如果num > strlen(text), 则后面输出的是text之后的内存中的随机的字符。

#include

#include

using namespace std;

int main()

{

   char One[] = “One if by land”;

   int fullLength = strlen(One);

   int tooShort = fullLength -4;

   int tooLong = fullLength + 6;

   cout.write(One,fullLength) << endl;

   cout.write(One,tooShort) << endl;

   cout.write(One,tooLong) << endl;

   return 0;

}

输入结果:

One if by land

One if by

One if by land i?!

分享到:
评论

相关推荐

    C++MFC教程

    更重要的是理解并能运用C++的各种特性,这些在以后的开发中都会有很大的帮助,特别是利用MFC进行开发的朋友对C++一定要能熟练运用。 2、理解Windows的消息机制,窗口句柄和其他GUI句柄的含义和用途。了解和MFC各个...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

    2.13.3 C++/CLI特有的功能—— 格式化输出 88 2.13.4 C++/CLI的键盘输入 91 2.13.5 使用safe_cast 92 2.13.6 C++/CLI枚举 92 2.14 查看C++/CLI类型 96 2.15 小结 97 2.16 练习 97 2.17 本章主要内容 98 第3...

    matlab代码中向量的点乘-veristand-model-coder:VeristandC/C++模型代码生成器

    比如一个电机模型就是对真实电机模拟,它具有电机的特性:给定一个电压可以得到一定的转速,同时它又是抽象的,我们只关心需要的参数,而忽略不重要的参数,从而简化模型的实现。 从形式上看,模型就是一个DLL,它...

    C#微软培训资料

    18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...

    语言程序设计课后习题答案

    //输出字符串Welcome to c++! } 在屏幕输出如下: Hello! Welcome to c++! 2-4 使用关键字const而不是#define语句的好处有哪些? 解: const定义的常量是有类型的,所以在使用它们时编译器可以查错;而且,这些...

    超爽的自学课件(java)

    &lt;br&gt;(10) 第10章:Java IO系统 理论上,我们可将任何程序分割为三部分:输入、处理和输出。这意味着IO(输入/输出)是所有程序最为关键的部分。在这一章中,大家将学习Java为此提供的各种类,如何用它们读写...

    《你必须知道的495个C语言问题》

    *2.5 在C语言中是否有模拟继承等面向对象程序设计特性的好方法? 22 2.6 为什么声明extern f(struct x *p); 给我报了一个晦涩难懂的警告信息? 23 2.7 我遇到这样声明结构的代码:struct name {int namelen; ...

    你必须知道的495个C语言问题

    *2.5 在C语言中是否有模拟继承等面向对象程序设计特性的好方法? 2.6 为什么声明externf(structx*p);给我报了一个晦涩难懂的警告信息? 2.7 我遇到这样声明结构的代码:structname{intnamelen;charnamestr[1];}...

    C语言FAQ 常见问题列表

    o 3.5 在 C 中是否有模拟继承等面向对象程序设计特性的好方法? o 3.6 我遇到这样声明结构的代码: struct name { int namelen; char namestr[1];}; 然后又使用一些内存分配技巧使 namestr 数组用起来好像有多个...

    mysql官方中文参考手册

    3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理模式下使用mysql 3.6. 常用查询的例子 3.6.1. 列...

    MYSQL中文手册

    3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理模式下使用mysql 3.6. 常用查询的例子 ...

    MySQL 5.1参考手册中文版

    3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理模式下使用mysql 3.6. 常用查询的例子 ...

    MySQL 5.1参考手册

    3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理模式下使用mysql 3.6. 常用查询的例子 3.6.1. 列...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    Karen Morton及其团队在本书中提供了专业的方案:先掌握语言特性,再学习Oracle为提升语言效率而加入的支持特性,进而将两者综合考虑并在工作中加以应用。作者通过总结各自多年的软件开发和教学培训经验,与大家...

    java面试题

    4:抽象:忽略与当前主题无关的那些方面,将注意力集中在与当前目标有关的方面 运行时异常和一般异常有何异同? 答:运行时异常时(JVM)java虚拟机在运行过程中发生的问题,比如:内存溢出等问题。这类异常没法...

    MySQL5.1参考手册官方简体中文版

    3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理模式下使用mysql 3.6. 常用查询的例子 3.6.1. 列...

Global site tag (gtag.js) - Google Analytics