C++学习笔记
#include <iostream>
using namespace std;
int addArray(int* array, int n);
/*命名空间:C++标准库所使用的所有标识符(即类、函数、对象等的名称)都是在同一个特殊的名字空间(std)中定义的。
如果没有使用这条指令,我们将需要使用std::cout这样的语法来调用输出流对象*/
int addArray(int* array, 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;
/*1.如果没有使用命名空间,那么这句应该改为:
std::cout << "结果是" << addArray(data, size) << std::endl;*/
/*2.cout是一个输出流对象,它是“console out(控制台输出)”的缩写,是属于basic_ostream类的对象。
ostream类在iostream头文件中定义。注意。。。*/
/*3.C++支持重载*/
return 0;
}
int addArray(int* array, int n)
{
int sum = 0;
int i;
for (i = 0; i < n; i++)
{
sum += *array++;
}
return sum;
}
编写一个程序,要求用0户输入一串整数和任意数目的空格,这些整数必须位于同一行中,但允许出现在该行中的任何位置。当用户按下键盘上的“Enter”键时,数据输入结束。程序自动对所有的整数进行求和并打印出结果。
C语言实现
#include <stdio.h>
#include <stdlib.h>
void main()
{
int i;
int sum = 0;
char ch;
printf("请输入一串整数和任意数目的空格: ");
while (scanf_s("%d", &i) == 1)
{
sum += i;
while ((ch = getchar()) == ' ') // 屏蔽空格
;//只要接收到空格,不进行任何操作
if (ch == '\n')
{
break;
}
ungetc(ch, stdin);
// 将变量ch 中存放的字符退回给stdin输入流。
}
printf("结果是: %d", sum);
printf("\n");
system("pause");
}
C++实现
#include <iostream>
using namespace std;
int main()
{
int sum = 0;
int i;
cout << "请输入一串整数和任意数目的空格:";
while( cin >> i )
{ sum += i;
while( cin.peek() == ' ' )
{
cin.get();
}
if( cin.peek() == '\n' )
{
break;
}
}
cout << "结果是: " << sum << endl;
return 0;
}
这个程序使用了cin 输入操作符又称为提取操作符,它一次从输入流对象cin提取一个整数。当用户进行键盘输入时,对应的字符将输入到操作系统的键盘缓冲区中。这样,当用户点击键盘上的“Enter”键时,操作系统把键盘缓冲区的内容传输到cin 流的内部缓冲区,“ >> ”操作符随后从这个缓冲区提取需要的信息。
”<<"–输出运算符
此运算符返回其左侧的运算对象
std::cout << “Enter two numbers:”<< std::endl;
在标准输出上打印消息,接受两个运算对象,左侧的对象必须是一个ostream对象,右侧的对象是要打印的值。
endl是一个被称为操纵符的特殊值,写入endl的效果相当于是结束当前行,并将与设备关联的缓冲区中的内容刷到设备中。缓冲刷新操作可以保证到目前为止程序所产生的所有输出都真正写入输出流中。
“>>"输入运算符
“>>”最初定义为右移操作符,它在C++ 中进行了重载,当它按照这里所示的方式使用时,它就用于从输入流对象提取信息。
另外,这个操作符对所有内建的数据类型都进行了重载,所以它可以从输入流对象提取出int, float, double 型数据,也可以提取字符串等数据。
在while( cin >> i ) 中,表达式 cin >> i 返回输入流对象本身,也就是cin。但是,如果到达了文件尾或者提取操作符遇到一个非法值,这个返回值将是 false。我们小举一个例子:如果我们试图把一个浮点数读取到一个 int 型变量中,当提取操作符遇到小数点时,它将使输入流对象置于一个错误的状态中,导致 cin 的值为 false。
cin.ignore(),cin.getline()
cin.ignore()的用法:参考文章
cin.ignore()函数中有两个参数,分别为数值型的a 和 字符型的 ch ,即cin.ignore( a, ch )。它表
示从输入流 cin 中提取字符,提取的字符被忽略,不被使用。而每抛弃一个字符,它都要进行计数和比较字符:如果计数值达到 a 或者被抛弃的字符是 ch ,则cin.ignore() 函数执行终止;否则,它继续等待。
它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响。例如可以这么用,cin.ignore(1024, ‘\n’),通常把第一个参数设置得足够大,这样实际上是为了只有第二个参数 ‘\n’ 起作用,所以这一句就是把回车(包括回车)之前的所以字符从输入缓冲流中清除出去。
#include <iostream>
using namespace std;
int main()
{
char str[30];
cout << "请输入一个字符串:";
cin >> str;
cout << str << endl;
cout << "请输入任意字符结束程序!\n";
cin.get();
return 0;
}
#include <iostream>
using namespace std;
int main()
{
char buf[20];
cin.ignore(7);
cin.getline(buf,10);
cout<<buf<<endl;
return 0;
}
cin.getline的用法
cin.getline() // 接受一个字符串,可以接收空格并输出,直到读到换行符
#include <iostream>
using namespace std;
main ()
{
char m[20];
cin.getline(m,5);
cout<<m<<endl;
}
cin.getline()实际上又三个参数,即:cin.getline(字符数组名,接收长度,结束符).
cin,getline()当输入的字符串超长时,会引起cin函数的错误。