C++学习——基础,名字空间,结/联/枚,字符串

一、C++语言概述

面向对象的语言

 

二、第一个C++程序

1.vi first.cpp

两种编译方式:

1)g++ first.cpp

2)gcc first.cpp -lstdc++

2.文件扩展名

1)xx.cpp

2)xx.cc

3)xx.C

4)xx.cxx

建议使用第一种扩展名写法:.cpp

3.头文件

`#include <>iostream`

注:所有标准C++中的I/O相关类型、对象、函数都在该文件中;标准C中的头文件依然可以使用

但是为了符合C++的编程风格,C++提供了一套不带“.h”的等价版本

`#include <stdio.h>  --->  #include <cstdio>

`#include <stdlib.h>`  ---->#include <cstdlib>

.......

注:只有标准库里的头文件可以这样写,UNIXC库按原来格式使用

4.标准输入输出

1)cin对象表示标准的输入设备//类似scanf

例:

int num;
scanf("%d\n",&num);

cin >> num; // >> 称为输入(提取)操作符

int i;
double d;
scanf("%d%lf",i,d);

cin >> i >> d; //用 >> 隔开

2)cout对象表示标准输出设备//类似printf

例:

int i =1234;
printf("%d",i);

cout << i << endl;// << 称为输出(插入)操作符

//打印一个整形数和一个浮点数
int i=1234,double d = 56.78;
printf("%d,%lf",i,d);
cout << i << "," << d << endl;
//endl 类似 \n 

 

三、名字空间(namespace)

1.基本概念:

①名字空间也成为命名空间,可以表示一个作用域

②定义名字空间中的实体被称为名字空间成员

2.名字空间作用

①避免名字冲突

②划分逻辑单元

3.定义名字空间

namespace 名字空间名{

名字空间成员1;

名字空间成员2;

}

注:名字空间成员可以是全局变量,函数,类型,名字空间

4.名字空间的使用

1)通过作用域限定操作符“::”

空间名::要访问的成员

例如:

std:cout //访问标准名字空间中的cout对象

2)名字空间指令

using namespace 空间名;

注:该条指令以后的代码当中,对于指定名字空间的成员都可见,可以直接访问,省略“空间名::”,受作用域限定

例如:

using namespace std;

3)名字空间声明

using 空间名::名字空间成员;

注:将名字空间中的特定一个成员引入当前声明的作用域中,在该作用域中访问这个成员就如同访问自己的局部变量一样,可以直接访问,省略“空间名::”

5.无名名字空间

没有放在任何名字空间的成员,将被编译器放入无名名字空间中,无名空间中的成员正常可以直接访问,如果和局部变量成员名字相同,局部优先;这时如果还希望访问无名空间中的成员,可以显式使用“::成员”

参考代码:

#include <iostream>
using namespace std;//标准名字空间指令
namespace ns1{
    void func(void){
        cout << "ns1的func" << endl;
    }
}
namespace ns2{
    void func(void){
        cout << "ns2的func" << endl;
    }
}
int main(void)
{
    using ns1::func;//名字空间声明
    func();
    //using ns2::func;
    //func(); //歧义错误
    func();//ns1::func,局部优先
    ns2::func();

    return 0;
}
#include <iostream>
using namespace std;

namespace ns1{
    int num = 100;
}
int num = 200;
int main(void)
{
    cout << num << endl;//200
    using ns1::num;//名字空间声明
    cout << num << endl;//100
    cout << ::num << endl;//200
    return 0;
}

四、C++的结构体,联合和枚举

1.结构体

1)当定义结构体变量时,可以省略struct关键字

2)在C++结构体中,可以直接定义函数,称为成员函数(方法),在成员函数中可以直接访问结构体中的其他成员

例:

struct HttpRequest{...};
struct HttpRequest req1;//C中
HttpRequest req3;//C++中

2.联合体

1)当定义联合变量时,可以省略union关键字

2)支持匿名联合

注:联合体可以用来判断处理器大小端

3.枚举

1)定义枚举类型变量时,可以省略enum

2)C++枚举看作是一种独立的数据类型,不能当做整形数据使用

enum STATE{SLEEP,RUN,STOP};
enum STATE state(){
	...
	return STOP;
}

五、字符串

1.C++兼容C中字符串的同时,增加string类型专门表示字符串

1)定义字符串

string s1; //定义空字符串
string s2 = "hello"; //定义字符串同时初始化
//以下两种写法跟上面的写法等价 
string s3 = string("hello");
string s4("hello");

2)字符串基本操作

①字符串拷贝:“=”

string s1 = "hello";
string s2 = "abc";
s2 = s1;

②字符串连接:“+/+=”

string s1 = "abc";
string s2 = "def";
string s3 = s1 + s2; //s3:"abcdef"
s1 += s2; //s1 = s1 + s2

③字符串比较:"== /!=/>/</>=/<=

string s1 = "hello";
string s2 = "hello";

if(s1 == s2)
{
    cout << "true" << endl;
}

注:比较的是首字符的ASCII码值,如果相同继续比较下一个字符

④随机访问:"[ ]"

string s = "hello";
s[0]='H';
cout << s <<endl; //“Hello”

3)相关成员函数

size()/length() //获取字符串的长度

c_str()  //获取C风格const char*

string s = "hello";
cout << s.size(); //5
cout << s.length(); //5
cout << strlen(s.c_str()); //5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值