Daibor Cyber Space

学习笔记、一些思考和记录

Visual Studio 编写 C++ 入门(一)

Posted at — Apr 5, 2019

开头

昨天一朋友突然关心了荒废已久的blog,唤醒了我重新日更(不可能)的激情,不如今天就把随时的笔记记录进来,虽然可能目前都是很基础+烂大街的信息,但也是个记录自己成长的地方。

作为一个EE专业学生,现在还不能用 C++ 刷 leetcode 实在是太过羞耻。立了四月末学会 C++ 的 flag (主要是为了通过秋季的 PAT 甲考试,毕竟 JS 这种沙雕语言用来刷算法题实在太@#¥%……),就把随时记录的学习笔记作为这次激情准备日更的开头吧~

参考资料

C++基础

程序结构

  1. 以#标志开始的句子是预处理器的指示语句。它们不是可执行代码,只是对编译器作出指示,因此不需要以分号结尾。
#include <iostream.h>

  1. C++标准函数库的所有元素都被声明在一个名空间中,这就是std名空间。因此为了能够访问它的功能,我们用这条语句来表达我们将使用标准名空间中定义的元素。
using namespace std;
std::cout << "Hello World!\n";
//不声明名空间就需要这样写 
cout << "Hello World!\n";
//cout 在的声明在头文件iostream.h中,所以要想使用cout 必须将该头文件包括在程序开始处。

变量和数据类型

  1. 有符号类型(signed)可以表示正数和负数,而无符号类型(unsigned)只能表示正数和0。在定义一个整型数据变量时可以在数据类型前面加关键字 signed 或 unsigned 来声明数据的符号类型。如果我们没有特别写出signed或 unsigned,变量默认为signed
unsigned shrot NumberOfSons;
signed int MyAccountBalance;
  1. 唯一的例外是字符型(char)变量,这种变量独立存在,与signed char 和 unsigned char型均不相同。
  2. shortlong 可以被单独用来表示整型基本数据类型,short 相当于 short intlong 相当于 long int
  3. signedunsigned 也可以被单独用来表示简单类型,意思分别同signed intunsigned int 相同
  4. 变量初始化的两种方法
int a = 0;
int a (0);
  1. C++提供一个string类来支持字符串的操作,它不是一个基本的数据类型,但是在一般的使用中与基本数据类型非常相似。与普通数据类型不同的一点是,要想声明和使用字符串类型的变量,需要引用头文件<string>,并且使用using namespace语句来使用标准名空间(std)
#include <iostream>

#include <string>

using namespace std;
int main()
{
    string mystring = "This is a a string";
    cout << mystring;
    return 0;
}

常量

  1. 除十进制整数另外, C++还允许使用八进制(octal numbers)和十六进制(hexadecimal numbers)的字常量(literal constants)。如果我们想要表示一个八进制数,我们必须在它前面加上一个0字符(zero character),而表示十六进制数我们需要在它前面加字符0x (zero, x)。
  2. 像变量一样,常量也是有数据类型的。默认的整数字常量的类型为int型。我们可以通过在后面加字母u或l来迫使它为无符号(unsigned)的类型或长整型(long)。
75//int
75u//usigned int
75l//long
75ul//unsigned long
  1. 浮点数表示,默认数据类型为double 同样可以在后面加上u和l
3.14
6.02e23//6.02X10^23
  1. 表达字符用单引号,字符串用双引号
  2. 可以数字ASCII 码表示一个字符,这种表示方式是在反斜杠()之后加以8进制数或十六进制数表示的ASCII 码。在第一种(八进制octal)表示中,数字必需紧跟反斜杠(例如\23或\40),第二种(十六进制hexacedimal),必须在数字之前写一个x字符(例如\x20或\x4A)。
  3. 如果每一行代码以反斜杠inverted slash ()结束,字符串常量可以分多行代码
  4. 定义常量,用预处理器指令#define
#define PI 3.1415

  1. 声明常量,用const前缀,如果不指定类型,则为int
const int width = 100;

操作运算

  1. 变量转换。
//方法1
int i;
float f = 3.14;
i = (int) f;
//方法2
i = int (f);
  1. sizeof() 这个运算符接受一个输入参数,该参数可以是一个变量类型或一个变量自己,返回该变量类型(variable type) 或对象(object)所占的字节数

基本输入输出

  1. cin 输入,cout 输出。cerrclog 它们是两种特殊设计的数据流专门用来显示出错信息。它们可以被重新定向到标准输出设备或到一个日志文件(log file)。
  2. 重载(插入)运算符 << ,将后面所跟数据插入到它前面的数据流中。可以在一个语句中多次使用。>> 只能在输入回车键后才能处理前面内容,且需要考虑输入类型。
int age;
cin >> age;
cin >> a >> b;//equal to
cin >> a;
cin >> b;

cin 如果读取字符串的话,遇到空格就会停止,所以无法读取完整句子。如果要读取一整行,需要用到 getline()

#include <iostream>

#include <string>

using namespace std;
int main() {
    string mystr;
    cout << "what's your name?";
    getline (cin, mystr);
    cout << "hello" << mystr << ".\n";
}
  1. 字符串流(stringstream)。标准头文件定义了一个 stringstream 的类,使用该类可以对基于字符串的对象进行流一样的操作。可以对字符串进行抽取和插入,将字符串与数值互相转换
cout << "Enter price: ";  
getline (cin,mystr);
stringstream(mystr) >> price;
comments powered by Disqus