C语言基础下的C++入门---极其绝望的又一次入门,不过这次一定是最后一次入门!!!!!

小程序的入门(一)~~!! 

#include<iostream>
using namespace std;//命名空间 相当于 #include<iostream.h>    -->> C92版本 
int addArray(int *addArray,int n);

int main(){
	int data[] = {0,1,2,3,4,5,6,7,8,9};
	int size = sizeof(data)/sizeof(data[0]);
	
	cout<<"结果是:"<<addArray(data,size)<<endl;//endl是结束标志 输出流必须得有一个结束标志吧 
	return 0; 
} 

int addArray(int *array,int n){
	int sum = 0;
	int i;
	for(i=0;i<n;i++){
		sum += *array++;
	}
	return sum;
}

这个小程序展示了C++对象的第一次使用。对象在哪里?就是“cout”。

C语言里的printf是一个函数,而C++里的cout是一个输出流对象,他是“console out”(控制台输出)的缩写,是属于basic_ostream类的对象。ostream类在iostream头文件中定义。

using namespace

  • 这是一个指定,这条指定带给我们一个全新的概念:名字空间
  • C++标准库所使用的所有标识符或叫关键字(例如类,函数,对象等的名称)都是在同一个特殊的名字空间(std)中来定义的(相当于java里的包)。如果没有使用这条指令的话,我们将需要使用std::cout这样的语法来调用输出流对象。

<<

  • 在C语言里这个操作符叫左移操作符,在C++里并不是说改规则了,不是左移操作符了,而是体现了C++里的另一个特点:支持重载。重载事实上就是允许我们按照不同的方式使用同一个操作符,在不同的语境里发挥不同的作用。

小程序入门(二)

要求:编写一个程序,要求用户输入一串整数和恩义数目的空格,这些整数必须位于同一行中,但允许出现在该航中的任何位置,当用户按下键盘上的enter键的时候,数据输入结束。程序自动对所有的整数进行求和并打印出结果。

C语言实现:

#include<stdio.h>
int main(){
	int num,sum=0;
	char ch;
	while(scanf("%d",&num)==1){//scanf函数如果正常接收了一个指定数据 返回值是1 否则接收不正常 
		sum += num;
		while((ch=getchar())==' ') ;//这个循环的作用是从缓冲区获取一个字符给ch  用来屏蔽空格
		if(ch=='\n') break;//如果获得的非空字符是回车 就跳出循环 输出计算结果
		ungetc(ch,stdin);
//如果从缓冲区获得的字符既不是空格 也不是回车 那说明是数字(数字是以某字符的ASC||码的形式存在ch里的) 就要把这个数字重新退回到缓冲区否则会影响计算 		 
	}
	printf("%d",sum);
	return 0;
}

//输入 22         22  33 44          
//结果 132

C++实现:

#include<iostream>
using namespace std;
int main(){
	int sum  = 0;
	cout<<"请输入一串整数和任意数目的空格:";
	int i;
	while(cin>>i){//从输入流对象中提取一个i类型的数据
//cin>>i返回输入流对象本身 也就是cin但是如果到达了文件尾或提取操作符遇到一个非法值 返回false
		sum += i;
		while(cin.peek()==' ') cin.get();//从缓冲区获取一个字符下面有关于这个函数的讲解
		if(cin.peek()=='\n') break;
	}
	cout<<"结果是:"<<sum<<endl;
	return 0;
}

cin

  • C++实现的例子里使用了流的对象cin。这个对象的类型是istream,他知道如何从用户终端读取数据。
  • cin>>i;cin输入操作符又称为提取操作符,他一次从输入流对象中提取一个i类型的数据,在这个例子里i是整数,所以就从输入流里读取一个整数类型的数据。
  • 当用户进行键盘输入的时候,对应的字符将输入到操作系统的键盘缓冲区中。这样当用户点击enter建的时候,操作系统把键盘缓冲区的内容传输到cin流的内部缓冲区,">>"操作符随后从这个缓冲区提取需要的信息。

>>

  • 最初定义为右移操作符,在C++中进行了重载,当他按照这里所提示的方式使用的时候,他就用于从输入流对象提取信息。
  • 另外,这个操作符对所有内建的数据类型都进行了重载,所以他可以从输入流对象中提取字符串,float,double,int等数据
  • cin>>i返回输入流对象本身 也就是cin但是如果到达了文件尾或提取操作符遇到一个非法值 返回false。

cin cout对象的多个方法介绍

  • cin.ignore();:cin.ignore(a,ch)方法是从输入流(cin)中提取字符,提取的字符被忽略(ignore),不被使用。每抛弃一个字符,它都要计数和比较字符:如果计数值达到a或者被抛弃的字符是ch,则cin.ignore()函数执行终止;否则,它继续等待。它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响。

例如:比如可以这么用:cin.ignore(1024,'\n'),通常把第一个参数设置得足够大,这样实际上总是只有第二个参数'\n'起作用,所以这一句就是把回车(包括回车)之前的所以字符从输入缓冲(流)中清除出去。

  • cin.getline();:接收一个字符串,可以接收空格并输出,需包含“#include<string>”
#include <iostream> 
using namespace std; 
main () 
{ 
char m[20]; 
cin.getline(m,5); 
cout<<m<<endl; 
}

//输入:jkljkljkl 
//输出:jklj
//接受5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出;
  • cin.get();:    1.cin.get(字符变量名)可以用来接收字符;2.cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格;3.cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车
//用法1
#include <iostream> 
using namespace std; 
main () 
{ 
char ch; 
ch=cin.get();               //或者cin.get(ch); 
cout<<ch<<endl; 
}
//输入:jljkljkl 
//输出:j
#include <iostream> 
using namespace std; 
main () 
{ 
char a[20]; 
cin.get(a,20); 
cout<<a<<endl; 
}
//输入:jkl jkl jkl 
//输出:jkl jkl jkl
//输入:abcdeabcdeabcdeabcdeabcde (输入25个字符) 
//输出:abcdeabcdeabcdeabcd              (接收19个字符+1个'\0')
  • cin.peek();:cin.peek()的返回值是一个char型的字符,其返回值是指针指向的当前字符,但它只是观测
    指针停留在当前位置并不后移;如果要访问的字符是文件结束符,则函数值是EOF(-1)
  • cout.precision();: cout.precision()其实是输出流cout的一个格式控制函数,也就是在iostream中的一个成员函数。precision()返回当前的浮点数的精度值,而cout.precision(val)其实就是在输出的时候设定输出值以新的浮点数精度值显示,即小数点后保留val位
  • cout.width();:函数的返回值:当前输出宽度

猜你喜欢

转载自blog.csdn.net/J_SUNV/article/details/84591501
今日推荐