2012
Jun
12

大部分的 C++ 用法,可以參考以下的網站。

字串相關

將字串轉成大寫

Example
  1. #include <iostream>
  2. #include <string.h>
  3. #include <algorithm>
  4.  
  5. int main () {
  6. string method = "http";
  7. std::transform(method.begin(), method.end(), method.begin(), ::toupper);
  8. }

將字串 string 轉成數字 int

string to int
  1. string s = "1";
  2. int a = atoi(s.c_str());

將字串串接 , sprintf

Example
  1. char* buff = new char[200];
  2. sprintf(buff , "%s.%s", a, b);
  3. // %# %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
  1. //char* buff = new char(12) // wrong !
  2. char* buff = new char[50];
  3. delete[] buff

string to char

Example
  1. char *res = new char[500];
  2. strcpy(resr, header.c_str());

Throw Exception

如果你想在 c 語言中使用 exception ,Compile 時的指令要加上 -fexceptions 才能 compile 成功。

binding.gyp: "cflags_cc": ["-fexceptions"]
Example
  1. #include <stdexcept>
  2. #include <exception>
  3.  
  4. throw std::runtime_error("exception message");

windows string to TCHAR

Example
  1. string paramStr = "xxxxxxxxxxxxx";
  2. TCHAR *postData;
  3. postData = (TCHAR*)paramStr.c_str();

const char* 裁字

如果我想擷取 bc 這兩個字。

Example
  1. char* tx = (char*) malloc (sizeof(char) * 3);
  2. const char* p = { "abcde" };
  3. memcpy(tx, p + 1, 2);
  4. *(tx + 2) = '\0';

回應 (Leave a comment)