【NDK系列4】c++基礎1 字符串、c兼容、引用、命名空間

終于開始c++基礎的整理了

1. 輸出

// C使用printf向終端輸出信息
// C++提供了 標準輸出流 
#include <iostream>
using namespace std;

   // 1. c++輸出
    int time = 8;
    cout << "dds:" << time << "點," << "hello world" << endl;

2. 函數(shù)符號兼容

C的大部分代碼可以在C++中直接使用,但是仍然有需要注意的地方。

//如果需要在C++中調(diào)用C實現(xiàn)的庫中的方法
extern "C" //指示編譯器這部分代碼使用C的方式進行編譯而不是C++
    
void func(int x, int y);

對于 func 函數(shù) 被C的編譯器編譯后在函數(shù)庫中的名字可能為func(無參數(shù)符號),而C++編譯器則會產(chǎn)生類似funcii之類的名字。

因此,對于C庫可以

#ifdef __cplusplus
extern "C"{
#endif
void func(int x,int y);
#ifdef __cplusplus    
}
#endif

//__cplusplus 是由c++編譯器定義的宏,用于表示當前處于c++環(huán)境

3. 引用

引用是C++定義的一種新類型,引用和指針是兩個東西,這里需要分清楚

//聲明形參為引用
void change(int& i) {
    i = 10;
}
int i = 1;

change(i);

printf("%d\n",i); //i == 10

4. 字符串

字符串實際上是使用 NULL字符 '\0'終止的一維字符數(shù)組。

//字符數(shù)組 = 字符串
char str1[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
//自動加入\0
char str2[] = "Hello";

字符串操作

函數(shù) 描述
strcpy(s1, s2); 復制字符串 s2 到字符串 s1。
strcat(s1, s2); 連接字符串 s2 到字符串 s1 的末尾。
strlen(s1); 返回字符串 s1 的長度。
strcmp(s1, s2); 如果 s1 和 s2 相同,則返回 0;如果 s1 < s2 則返回小于0;如果 s1>s2 則返回大于0
strchr(s1, ch); 返回指向字符串 s1 中字符 ch 的第一次出現(xiàn)的位置的指針。
strstr(s1, s2); 返回指向字符串 s1 中字符串 s2 的第一次出現(xiàn)的位置的指針。

C++ string類

C++ 標準庫提供了 string 類類型,支持上述所有的操作,另外還增加了其他更多的功能。

#include <string>
//string 定義在 std命令空間中
usning namespace std;
string str1 = "Hello";
string str2 = "World";

str1.append(str2);
//獲得c 風格字符串
const char *s1 = str1.c_str();
//字符串長度
str1.size();
//長度是否為0
str1.empty();

......

5. 命名空間

namespace 命名空間 相當于package

namespace A{
    void a(){}
}

錯誤 : a();
// :: 域操作符
正確: A::a();


//當然也能夠嵌套
namespace A {
    namespace B{
        void a() {};
    }
}
A::B::a();

//還能夠使用using 關鍵字
using namespace A;
using namespace A::B;

代碼

https://github.com/ddssingsong/AnyNdk

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容