鱼C论坛

 找回密码
 立即注册
查看: 1747|回复: 2

[技术交流] 从小程序谈起

[复制链接]
发表于 2014-10-31 00:55:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.数组作为参数传递会退化为指针

2.类是C++一个很重要的概念。cout是常用的输出流对象之一,实际上就是一个数据结构,类似于队列。隶属于basic_ostream类,而ostream类在iostream图片中定义。
3.C++中用的是#include <iostream>而不是<iostream.h>。其实也可以用,只不过要将using namespace std取消掉。这个和c92以及c99的标准有关。.h是属于c92标准,还没有引入命名空间的概念,沿用C语言的特性。到c99的时候就是用了命名空间。但是C++天生要兼容c语言,所以在注销掉using namespace std以后可以使用.h的原因就是为了兼容C语言而已,正规C++不提倡用.h。
4.C++中的变量和函数都是在一个特定的命名空间中定义的,使用这些变量或者函数的时候需要指明命名空间。一种是公开使用,在文件开头使用using namespace std类似的语句,但这样有一种不太封闭和安全的嫌疑。另外就是在相关变量或者函数前面加上命名空间::。比如std::cout这样的格式。
5.C++还支持运算符重载,就是说一个运算符在不同的场景下有不同的使用方法。具有不同的功能。

6.cin也是一个对象,对象类型是istream类的,从终端读取数据
7.》操作符被重载,作为提取操作符,一次从输入流对象cin提取一个整数。而且他对所有的内建数据类型都进行了重载即还可以提取float以及double等数据类型以及字符串。
8.用户在键盘上输入数据以后并不是马上到程序处理的地方,而是存放在操作系统的键盘缓冲区,只有当用户输入回车的时候才会将键盘缓冲区的数据发送到cin流的内部缓冲区,然后》操作符再逐一提取数据。所以在while(cin》i)中当键盘输入回车的时候不会立即结束,而是在遇到if(ch=='\n') break;的时候才会结束循环。准确来说是跳出循环。
9.在while( cin >> i )  中,表达式 cin >> i 返回输入流对象本身,也就是cin。但是,如果到达了文件尾或者提取操作符遇到一个非法值,这个返回值将是 false。如果我们试图把一个浮点数读取到一个 int 型变量中,当提取操作符遇到小数点时,它将使输入流对象置于一个错误的状态中,导致 cin 的值为 false。
10.C++可以再任意的地方定义一个变量,这个有别于c语言。
11.cin的一些常见方法(函数),为了增强输入控制。

例子一:cin.ignore() & cin.getline()
#include <iostream>
using namespace std;

int main(void)
{
     char buf[20] = {0};

     cin.ignore(7);

     cin.getline(buf,10);

     cout << buf << endl;

     return 0;
}
cin.getline(目标缓冲区,欲复制长度)

例子二:cin.get() & cin.peek()

#include <iostream>

using namespace std;

int main(void)
{

     char p;

     while(cin.peek() != '\n')
     {
          p = cin.get()     ;
          cout << p;
     }

     cout << endl;
     return 0;
}

cin.peek()只是做检测但是不会把字符取走。即不会操作到输入流缓冲区的实际数据。本质是取出来检测以后放回去。
例子三:cin.gcount() & cin.read() & cin.write()
#include <iostream>

using namespace std;

int main(void)
{

     const int SIZE = 50;
     char buf[SIZE];

     cout << "请输入一个字符串\n";

     cin.read(buf,20);

     cout << "输入的字符数是:"<< cin.gcount()<<endl;

     cout << "输入的文本信息是:";
     cin.write(buf,20);
     cout << endl;

     return 0;
}

cin.gcount()是计数输入了多少个字符串,而cin.read(目标区,长度)是读取,cin.write(源区,长度)是输出。

12.cout常见的控制输出格式的方法
例子一.cout.precision()

#include <iostream>
#include <math.h>

using namespace std ;

int main ()
{
      double result = sqrt (3.0 );

      cout << "对 3 开方保留小数点后0 ~ 9 位,结果如下: \n" << endl ;

      for ( int i= 0 ; i <= 9 ; i++ )
      {
            cout . precision( i );
            cout << result << endl ;
      }

      cout << "当前的输出精度为: " << cout. precision() << endl ;

      return 0 ;
}



例子二.cout.width()

#include <iostream>

using namespace std ;

int main ()
{
      int width = 4;
      char str[ 20 ];

      cout << "请输入一段文本: \n" ;
      cin . width( 5 );

      while ( cin >> str )
      {
            cout . width( width ++);
            cout << str << endl ;
            cin . width( 5 );
      }

      return 0 ;
}


本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-5-1 19:45:14 | 显示全部楼层
太牛啦~~~楼主这些代码都是自己敲的吗 还是有小甲鱼的源代码??我正找呢 多谢啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-7 20:43:36 | 显示全部楼层
看看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 08:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表