1樓:匿名使用者
#include
#include
#include
int use_foo1_1(int n)
int use_foo1_2(int n)
int use_foo2_1(int n, int m)
int use_foo2_2(int n, int m)
void test1(void)
//由於 map的value部分只能接受一種型別
// use_foo1_1 和 use_foo2_1 不是同一種型別的函式
//所以 儲存函式的指標 使用 void* 這樣就能儲存了,
// 但是通過函式指標呼叫函式的時候需要把 void* 轉換成相對應的指標型別才行
//所以 乙個map結點需要儲存2個內容 函式指標和 轉換函式的型別說明符號
void test2(void)
if(map["aaa"].second == 2)
if(map["bbb"].second == 1)
if(map["bbb"].second == 2)
}//然後乙個更通用的模式
// 要通用 就會碰到 3個問題,boost裡有現成的解決方案 當然你也可以自己想辦法
// 1 函式指標型別 // 用boost::bind 儲存
// 2 函式引數表型別 // 統一成boost::tuple 傳遞時用boost::any
// 3 函式返回值型別 // 統一成引數返回
#include
#include
#include
#include
#include
#include
class foo_container
;template
class foo_handler
: public base_foo_handler //帶返回值的函式包裝
virtual void call(const boost::any& params) const
private:
foo_type _foo;
param_parse_and_call_type _params_parse_and_call;
ret_back_type _ret_back;
};template
class foo_handler
: public base_foo_handler //不帶返回值的函式包裝
virtual void call(const boost::any& params) const
private:
foo_type _foo;
param_parse_and_call_type _params_parse_and_call;
};template
struct params_foo_switch //函式執行的規範函式
template
static void s_params_parse_and_call(const handler_foo& foo, const boost::any& params, const handler_ret_back& ret) //帶返回值 //引數有多少個就補充多少組
};template<>
struct params_foo_switch<1> //函式執行的規範函式(1引數)
template
static void s_params_parse_and_call(const handler_foo& foo, const boost::any& params, const handler_ret_back& ret)
};template<>
struct params_foo_switch<2> //函式執行的規範函式(2引數)
template
static void s_params_parse_and_call(const handler_foo& foo, const boost::any& params, const handler_ret_back& ret)
};template<>
struct params_foo_switch<3> //函式執行的規範函式(3引數)
template
static void s_params_parse_and_call(const handler_foo& foo, const boost::any& params, const handler_ret_back& ret)
};//如要處理4參以上的函式 請自己補充, 一般20參 足夠了copy pase的體力活
typedef boost::shared_ptrfoo_handler_ptr_type;
typedef std::mapmap_type;
typedef map_type::const_iterator map_citer_type;
private:
typedef foo_container this_type;
public:
foo_container(void){}
~foo_container(void){}
template
bool register_foo(const std::string& name, const handler_foo& foo)
template
bool register_foo(const std::string& name, const handler_foo& foo, const handler_ret_back& ret)
template
bool call(const std::string& name, const tuple& params) const
iter->second->call(boost::any(params));
return true;
}private:
template
bool prv_register_foo(const std::string& name, const handler_foo& foo, const handler_params_parse_and_call params)
template
bool prv_register_foo(const std::string& name, const handler_foo& foo, const handler_ret_back& ret,
const handler_params_parse_and_call& params)
private:
map_type _map;
};template
void back_ret(const t& val)
void test3(void)
int main(int argc, char* argv)
vc2010下編譯執行通過 功能擴充 弄清楚後你自己新增
boost版本1.53
2樓:匿名使用者
你的意思是直接寫乙個字串,然後變成乙個函式嗎?你可以使用建立模式,通過工廠加工,又或者使用其他的方法,我覺得你表達不是很清晰
3樓:匿名使用者
.... 這個你自己寫介面吧,if 或者case switch
如何用c/c++把乙個字串把裡邊的數字提取出來
4樓:匿名使用者
#include
int main()
else if((a[i]>='a'&&a[i]<='z')||(a[i]>='a'&&a[i]<='z')) //如果是字母.
}b[cnt_index++]='\0'; //增加字串結束符.
cout<
5樓:匿名使用者
一. 先用 strstr 找到那行 ;
二. 然後 提取出來 用sscanf進行解析 ;
三. 後面的數字不知道的也可以提取出來 ;
四. 可以用 %d 代替,也可以用 string 和 fstream類 還有 getline、
6樓:匿名使用者
#include
#include
using namespace std;
void tiqu(char*a,int*b)else}}
void main()}
7樓:匿名使用者
//支援負數,
末尾數字,stl,c++**。
#include
#include
#include
//string輸入,vector輸出
void get_int(const std::string& s, std::vector& vi)
else}}
}if(now_digit)
}int main(int argc, char *argv)
8樓:
||#include
void sort(int *a,int n);
int main()
for(j=0; j排序
sort(a,i);
//輸出
for(j=0; j a[j])
}if(k != i)}}
僅供參考……
c++中怎麼把乙個字串賦給乙個變數
9樓:匿名使用者
對於string型的變來量,直接賦值即可,源如string str="abcde";使用string類需要使用標頭檔案#include
對於char陣列型的變數,在宣告時可以直接賦值,如char str = "abcde",
對於char陣列型的變數,在非宣告的時候賦值時,不能直接賦值,如char str[64];str = "abcde";是不允許的,需要借助strcpy函式進行賦值,需要使用標頭檔案#include 。使用方法:
char str[64];
strcpy(str, "abcde");//將abcde拷貝到str陣列中。
10樓:風琦凌波
問題一的解決:
這個問題通常有兩種解決方法,乙個是
字元陣列(現已不常用)另回一答個是string類,當然這個要在標頭檔案中加上#include
**如下:
#include
#include
using namespace std;]int main()
11樓:愛做夢的男孩
可以使用:
strcpy(str, "abc");strcpy(str,"abcde");
但是bai
有一點要注意du,str的空間zhi
大小要夠存放後面的字串
dao.
這樣就可以把回abc賦值給str了.
包含答標頭檔案:
#include
字串陣列可以如下定義:
char *str[3]=
如果對str[0]賦值,同樣可以用上面的函式strcpy(str[0], "sfdsfsd");
在c++中,可以使用c++標準庫中的string類,定義string str;
str = "abc";
str = "abcde"
這個要新增如下標頭檔案
#include
using namespace std;
c語言中如何定義字串,C語言中如何定義字串?
可以用陣列或指標 陣列 char s 80 abcd 或者char s 80 說明 自動加字串結束標誌 0 char s 80 指標 char s char s abcd c語言是一門通內用計算機程式設計容語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯 處理低階儲存器 產生少量的機器碼...
C 字串長度與位元組的問題,C 字串有效長度的問題
1 strlen函式是返回字元長度 以空字元為結束符 所以是5 2 sizeof str 返回是指定變數占用空間大小str是指標變數,指標大小為4,所以返回4你可以把str變成陣列 char str 12345 此時str是陣列,所以sizeof str 返回的是6 strlen 函式返回不包含結束...
如何用c語言輸入字串,把裡面連續的數字依次存放到陣列中
夔啟江澄邈 定義一個足夠的陣列,迴圈字元陣列,遇到數字就放到新的陣列中 void main i 0,j 0,x 0 printf 請輸入一串字元 n gets a for p a p 0 p else b i 1 b i 1 10 p 48 x 1 else x 0 for j 0 b j 0 j ...