C C 基本操作

2021-10-05 21:47:30 字數 3963 閱讀 4378

1.函式執行時間計時:

clock_t start = clock();

函式體;

clock_t end = clock();

double time = (double)(end - start)/clocks_per_sec;

2.檔案內容操作:

fstream file;

std::ostringstream oss;

oss<<"file_1.txt";

filie.open(oss.str().c_str(),ios_base::out|ios_base::trunc);//ios_base後面的內容用於控制檔案。

file<<"寫入的資料"<<"\n";

file.close();

file.clear();

3.release版本exe使用效能檢測無法進入函式的解決方法:

無法進入函式主要是因為release版本沒有生成pdb檔案,修改設定就可生成。詳見:vs2015 讓release程式生成pdb檔案可以加dump除錯的release版本_yhc166188的部落格-csdn部落格_release 生成pdb

前兩步是exe執行依賴的庫的修改,第三步是main函式所在工程屬性的修改。

4.檢視指標指向記憶體大小的方法:

char* ptr = "sdf";

int s = strlen(ptr);

printf("ptr value is:%s \n", ptr);

使用sizeof不行。

5.返回環境變數path的值

char* ptr = getenv("path");

printf("ptr value is:%s \n", ptr);

6.字串拷

char str[10] = ;

snprintf(str, 10 ,"0123456789");

printf("str=%s/n", str);

snprintf速度比memcpy,strcpy要慢,但是適用範圍廣。要注意第二個引數(該引數的值為 拷貝位元組數(bytes)),如果值大於目標物件可以承受的大小,將會執行出錯。

7.fopen和fopen_s

fopen用法: fp = fopen(filename,"w")。

fopen_s用法:,須定義另外乙個變數errno_t err,然後err = fopen_s(&fp,filename,"w")。

返回值: fopen開啟檔案成功,返回檔案指標(賦值給fp),開啟失敗則返回null值;

fopen_s開啟檔案成功返回0,失敗返回非0。

在定義file * fp 之後,fopen的用法是: fp = fopen(filename,"w")。而對於fopen_s來說,還得定義另外乙個變數errno_t err,然後err = fopen_s(&fp,filename,"w")。返回值的話,對於fopen來說,開啟檔案成功的話返回檔案指標(賦值給fp),開啟失敗則返回null值;對於fopen_s來說,開啟檔案成功返回0,失敗返回非0。

8.獲取年月日

(12條訊息) localtime、localtime_s、localtime_r的使用_開源的才是世界的-csdn部落格_localtime_r

9.指標學習

int a = 10;

int aa = 100;

int* s = nullptr;

int* p = &a;

//int* p = s;

printf("p value is:%d \n", *p);

int& c = *p;

printf("c value is:%d \n", c);

c = aa;

printf("c value is:%d \n", c);

10.g++指令

g++ -o testmysql -std=c++14 -i/usr/include/jdbc -l/usr/lib/private  -lcrypto  -lssl -lmysqlcppconn testmysql.cpp

鏈結庫 -l 時,如果庫的名稱為libssl.so,則 -lssl,如果庫的名稱為libcrypto.so,則-lcrypto.

11.c++等待一段時間

#include  // std::thread, std::thread::id, std::this_thread::get_id

#include 

this_thread::sleep_for(chrono::seconds(2));

12.windows下安裝mysql

windows下安裝mysql詳細教程 - m1racle - (cnblogs.com)

mysql的安裝與配置——詳細教程 - winton-h - (cnblogs.com)

注意一點:新建使用者時需要注意乙個問題,更改密碼需要加上password單詞修飾,如下語句會出錯:update mysql.user set authentication_string=("123456") where user="root"; 

建議使用:alter user 'root'@'localhost' identified with mysql_native_password by '123456';

13.mysql種建立使用者、修改host的值及更新

使用lsof|grep delete來檢視。

然後使用kill -9+ 程序號刪除程序,比如 kill -9  7410,程序號時lsof|grep delete查詢結果的第二列。

15.基於c++11的執行緒池(threadpool),簡潔且可以帶任意多的引數 - _ong - (cnblogs.com)

學習使用執行緒池。

16.enum的大小為4位元組,可以通過sizeof來測試。

詳見:列舉型別enum詳解——c語言 - 藍海人 - (cnblogs.com)

重點:

typedef enum weekmy;
那麼my等價於 enum week

17.cmake編譯型別

relwithdebinfo
18.

windows下在c++程式中執行powershell指令,

system(sss.c_str());注意:彷彿  \ 也能夠使用,但是在遇到數字時需要使用到雙斜槓-- \\  ,

詳見:(8條訊息) c/c++中system()函式詳解_阿桑的專欄-csdn部落格_c++ system函式

19.c語言#if、##ifdef、#ifndef的用法詳解,c語言條件編譯詳解 (biancheng.net)

#if _win32

printf("this is windows!\n");

#else

printf("unknown platform!\n");

#endif

#if __linux__

printf("this is linux!\n");

#endif

20.

(13條訊息) 函式返回char* 的解決方案_芒果兒-csdn部落格_返回char*

線性鍊錶基本操作實現(C C )

函式結果狀態 define true 1 define false 0 define ok 1 define error 0 define infeasible 1 define null 0 define overflow 2 include include include using names...

佇列的基本操作(順序結構)C C

順序結構的佇列,大多情況下對空間的申請比較死,想了個辦法 用string形式來儲存佇列元素,對於new的方式,我也實在想不出夠準確的申請方法。c語言式 include include using namespace std struct queue void initqueue queue q bo...

詳細的單鏈表基本操作C C 實現

include include include includeusing namespace std typedef struct snode lnode int listinsert lnode l,int i,int e 結點插入指定位置 if p j i 1 如果不存在指定位置 void cr...