2012
Jun
12
大部分的 C++ 用法,可以參考以下的網站。
字串相關
將字串轉成大寫
Example
- #include <iostream>
- #include <string.h>
- #include <algorithm>
- int main () {
- string method = "http";
- std::transform(method.begin(), method.end(), method.begin(), ::toupper);
- }
將字串 string 轉成數字 int
string to int
- string s = "1";
- int a = atoi(s.c_str());
將字串串接 , sprintf
Example
- char* buff = new char[200];
- sprintf(buff , "%s.%s", a, b);
- // %# %s 接的值不能用 string ,需轉換 string.c_str()
Memory locate and free
有一次想用 C 語言寫個小功能,在寫程式的途中有用到一些字串的 buff,於是我定義了 char* buff = new char(12),想說來個 12 bytes 的字串,最後再加一句 delete[] buff,來移除 memory,結果出錯了,錯誤訊息:「free(): invalid next size (fast)」,gcc 也算貼心了,幫你寫出問題,不過我看來看去,完全找不到任何邏輯有錯的地字,一直過了幾天,才發現小括號是直接給值的意思,不是分配記憶體呀!!! 所以我一直在指定 buff 這個變數等於字串(12),總個超傻眼,正確的分配記憶體方式,請用中括號。
Example
- //char* buff = new char(12) // wrong !
- char* buff = new char[50];
- delete[] buff
string to char
Example
- char *res = new char[500];
- strcpy(resr, header.c_str());
Throw Exception
如果你想在 c 語言中使用 exception ,Compile 時的指令要加上 -fexceptions 才能 compile 成功。
binding.gyp: "cflags_cc": ["-fexceptions"]
Example
- #include <stdexcept>
- #include <exception>
- throw std::runtime_error("exception message");
windows string to TCHAR
Example
- string paramStr = "xxxxxxxxxxxxx";
- TCHAR *postData;
- postData = (TCHAR*)paramStr.c_str();
const char* 裁字
如果我想擷取 bc 這兩個字。
Example
- char* tx = (char*) malloc (sizeof(char) * 3);
- const char* p = { "abcde" };
- memcpy(tx, p + 1, 2);
- *(tx + 2) = '\0';