1.a += 5;//a = a + 5;
其他的计算相近,这里有的人说区分不开放在前面和放在后面的意义,其实这个单纯地看做一个符号是最好的。和+无关,和=无关,和两者的组合有关。
2.判断语句if
if (word) {
std::cout << "It is a word.\n";
} else {
std::cout << "It isn't a word.\n";
}
如果仅为一条结果语句也可以省略花括号
if (word) std::cout << "It is a word.\n";
但是不推荐这样进行处理,因为这样会造成后期代码检错和代码修改的不便。
3.三元操作符
w = ( (word % 2) == 0) ? 'Y' : 'N';//偶数Y,奇数N
这里把值赋给了w,这里也可以直接输出
std::cout << ( (word % 2) == 0) ? 'Y' : 'N';
这里需要注意的是 == 和 = 的区别。
4.判断语句,switch
switch (year) {
case 1995:
std::cout << "It's not.\n"
break;
case 1996:
std::cout << "It's not.\n"
break;
case 1997:
std::cout << "It's not.\n"
break;
case 1998:
std::cout << "It's.\n"
break;
}
注意,这里的break是直接跳出该循环。
switch的限制是:它只能使用整数和char数据类型。
5.++,–
int a = 5;
a++; // 6
6.sizeof返回变量或者变量类型在该系统中的内存占用空间
std::cout << "Size of float" << sizeof(float) << " byte(s).\n";
float w = 0.3;
std::cout << "Size of w" << sizeof w << " byte(s).\n";
7.while只用当条件满足时才停止。
while (multiplier <= num) {
sum *= multiplier;
++multiplier;
}
8.do while和while的区别在于,前者至少会执行一次循环体,后者可以一次都不执行。
9.我们存储的数据能无限存储么?不能
我们在定义变量时都会提前声明类型,也就是给分配内存,8位二进制,16位二进制,64位二进制等等。
比如分配的空间范围为0~65535,那么65535+1=0,0-2=65534
10.for (声明变量赋值变量;判断是否满足条件;在判断之前执行该项一次)
for (int i =5, int j =8; (i+j) <= w; ++i,++j) {
sum *= (i+j);
}
11.switch不区分大小写的分支(因为用户输入大小写都是有可能的)
case 'Y':
case 'y':
std::cout << "OK!";
break;
12.输入cin,输出cout都是来自于iostream
因此需要在前面加上引入iostream
13.在switch的情况没有满足的case,那么定义一个default作为switch的结尾。
default:
std::cout << "nothing!\n";
break;
}
14.当用户输入数据时不会被一边输入一边写入,只会在回车键按下后,一次性发送到C++程序中。
在多项输入时,缓冲区的数据会对其他项造成影响。
std::cin::ignore(5);
这里是丢弃缓冲区的5个字符。
std::cin::ignore(10, '\n');
这里是丢弃10个字符或者直到遇到另一个换行符。
std::cin::ignore(std::cin.gcount()+1);
删除整个缓冲区
15.一次输入两个字符串,中间使用空格分开的
std::cin >> name >> number;
16.读入一整行文本
std::string input;
std::cout << "Input something: ";
std::getline(std::cin, input);
直到换行符出现,输入结束。
17.cin输入的问题:
1.无法把一个值赋值给一个变量,程序仍然继续执行。键盘输入数据与获得的变量不匹配,程序给出一个错误的结果;
2.cin接收到数据才能执行,只是一直按回车键,程序将一直等在那里。
if (std::cin.eof()) //到达文件末尾,返回true;
if (std::cin.fail()) //cin无法工作,返回true;
if (std::cin.bad()) //遇到较为严重的原因,无法工作,返回true;
if (std::cin.good()) //上面情况没发生,返回true;
18.当用户输入错误时,需要程序删除一些缓冲数据,重新等待用户键入。
int age;
std::cout << "Enter your age: ";
while (!(std::cin >> age)) {
std::cin.clear();
std::cin.ignore(100, '\n');
std::cout << "Enter your age: ";
}
增加输入的提示信息
std::cout << "Enter a number: [##.#] ";
19.字符串转换为数值类型
strtol(); //字符串——长整数
strtod(); //字符串——double浮点数
strtold(): //字符串——long double浮点数
20.数据输出到文件——fstream库
#include <fstream>
std::ofstream fileOutput("filename"); //将fileOutput与文件进行关联。
filname的文件格式:
绝对路径:D:\\mylife\\filename.ext或/mylife/filename.ext;
相对路径:../filename.ext或mylife\\filename.ext;
文件调用时不需要原文件存在,可以直接生成。
fileOutput.close();//关闭文件流
std::ofstream fileOutput("name.txt", std::ios::app); //std::ios::app的app为append,意思为追加。程序打开文件,然后在现有文件中增加更多的数据。
if (fileOutput.is_open()) {
fileOutput << name << "|" << age << "\n"; //向程序写入名字|年龄
fileOutput.close();
}
在文件打开时,可以先创建ofstream类型的变量,在调用open()函数
std::ofstream fileOutput;
fileOutput.open("/mylife/filename.ext");
ios::nocreate; //如果不存在,就不创建
ios::noreplace; //如果存在,不要打开
fileOutput("name.txt",(std::ios:;app) | (std::ios::nocreate)); //同时使用多个标志
21.
../ 代表当前目录的父目录;
./ 代表当前目录。
22.
std::string line;
while (std::getline(flieInput, line, '|') ) {
} //getline()会一直读到"|"(默认为:换行符),存入line
std::string entireFile, line;
while (std::getline(flieInput, line) ) {
entireFile += line; //文件全部读入大字符串
}
23.定义自己的函数
void max(); //void定义函数没有返回值
int max(); //定义一个简单的类型,这里的空白()表示没有输入
函数原型定义在main()之前
#include statements
void max();
int main() {
}
void max() {
}
24.创建带输入参数的函数
void max (int num, int power); //每个参数都要声明
void max (int num, int power = 5); //可以直接赋值,但是赋值项必须在可选参数之前