- 博客(1)
- 资源 (18)
- 收藏
- 关注
C++ 模板写的短小字符串类,用于替换字符数组和std::string
//短小字符串类
template<size_t N>
struct TinyString
{
TinyString();
template<size_t K>
TinyString(const TinyString<K>& str);
TinyString(size_t n, char c);
TinyString(const char* s, size_t n=0);
TinyString(const std::string& str);
template<size_t K>
TinyString& operator = (const TinyString<K>& str);
TinyString& operator = (const std::string& str);
TinyString& operator = (const char* s);
TinyString& operator = (char ch);
template<size_t K>
TinyString& operator += (const TinyString<K>& other);
bool empty() const { return len == 0; }
int size() const { return len; }
int obj_size() const { return sizeof(*this); }
const char* GetData()const { return buffer; }
const char* c_str()const { return buffer; }
bool operator == (const TinyString& other) const;
bool operator < (const TinyString& other) const;
operator std::string() const; //转为字符串
std::string ToString()const; //转为字符串
template<size_t K>
friend std::ostream & operator<< (std::ostream& os, const TinyString<K>& str);
template<size_t K, size_t L>
friend bool operator == (const TinyString<K>& s1, const TinyString<L>& s2);
//......
uint8_t len;
char buffer[N-1];
};
typedef TinyString<8> TinyStr8;
typedef TinyString<16> TinyStr16;
typedef TinyString<32> TinyStr32;
typedef TinyString<1024> TinyStr1K;
typedef TinyString<4096> TinyStr4K;
2020-03-11
使用c++实现boost::any类
使用c++实现boost::any类
any类可以存放任意类型数据,如:
void test_any()
{
any any_a1(123);
int a2 = any_cast(any_a1);
int* p_a2 = any_cast(&any_a1);
std::cout << "a2 = " << a2 <<" *p_a2="<<*p_a2<<std::endl;
any any_b1(12.35);
double b2 = any_cast(any_b1);
std::cout << "b2= " << b2 << std::endl;
any any_str(std::string("abc"));
std::string msg = any_cast(any_str);
std::cout << "msg= " << msg << std::endl;
std::vector values,new_values;
for(int idx=0;idx<10;idx++)
{
values.push_back(0.5+idx+10);
}
any any_vector(values);
new_values = any_cast<std::vector>(any_vector);
auto iter = new_values.begin();
while( new_values.end() != iter )
{
std::cout << *iter <<" ";
++ iter;
}
std::cout << std::endl;
}
2016-01-26
doxygen v1.8.8
使用Doxygen生成全中文的chm文档 生成类图
项目一般设置
首先在“Wizard”标签的Project项进行如下设置:
项目名称:将在最新的文档首页中显示
源码列表:选择要生成文档的源代码或目录 可以有多个文件或目录形成一个列表 建议使用相对路径 相对于当前目录(也即当前配置文件所在的目录)
递归扫描:如果需要对整个源码目录下的所有子目录及文件生成文档 请勾选本项
输出目录:设置最终生成的帮助文档的存储路径 建议使用相对路径
下一步 Mode项 根据需要设置文档生成模式
下一步 Output项 设置输出格式 勾选HTML和“prepare for compressed HTML chm ”
然后切换到“Expert”标签的“HTML”项 设置HTML和CHM相关的选项:
GENERATE HTMLHELP:确保已经勾选了
CHM FILE:最终生成的 chm的文件名 如“HkcProjectHelp chm” 默认为“index chm” 可以使用路径 也可以使用相对路径 相对于上面设置的输出目录的html目录(建设使用上一级目录 如“ MyDoc chm”)
HHC LOCATION:chm 编译器(hhc exe)的全路径 请指到 HTML Help Workshop 的安装目录的 hhc exe 程序
CHM INDEX ENCODING:chm索引文件编码 下面会讲到 这里填“GBK”
编码设置
编码设置很重要 如果设置不当 生成的文档会出现乱码 因为 Doxygen 汲及的东西多 有好几项编码设置 所以需要认真对待 根据项目的实情情况设置
所有高级设置(包括编码设置)都在“Expert”标签 重要的设置项如下:
Project DOXYFILE ENCODING:当前 Doxygen 配置文件本身的字符编码 默认为UTF 8 一般不需要修改
Project OUTPUT LANGUAGE:输出语言 这里是指Doxygen自己生成的导航 提示 帮助等文本的文字采用的语言 我们希望帮助文档是全中文的 所以选择Chinese
Input INPUT ENCODING:输入文件的编码 这里是指我们的源代码文件本身的编码 在Windows平台一般是系统编码(GBK) 而Linux平台一般是UTF 8 请用文本编辑器查看源文件的编码 这里如果设置的不一致 源码文件的注释中所有非ASCII字符将在生成的文档中变成乱码
HTMP CHM INDEX ENCODING:这里设置Doxygen生成的CHM索引文件的编码 以前是不能设置的 默认为UTF 8 而微软的编译器不能识别UTF 8编码的索引文件 所以最终造成左边目录导航栏乱码 我们设置它为GBK 这样Doxygen将为我们生成GBK编码的索引文件( hhc hhk hhp)
生成CHM文档
设置好了后 点击“Run”→“Run doxygen”生成最终的 chm文档 如果设置正确 打开后是全中文的了 ">使用Doxygen生成全中文的chm文档 生成类图
项目一般设置
首先在“Wizard”标签的Project项进行如下设置:
项目名称:将在最新的文档首页中显示
源码列表:选择要生成文档的源代码或目录 可以有多个文件或目录形成一个 [更多]
2014-10-26
Hook Api,hook ReadFile,hook WriteFile,hook LoadLibrary
hook api,hook CreateFile,hook CloseHandle,hook ReadFile,hook WriteFile,hook LoadLibrary
2014-09-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人