string函数

转自

别来无恙 提交于 2020-03-25 03:40:05
有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体. struct模块中最重要的三个函数是pack(), unpack(), calcsize() pack(fmt, v1, v2, ...) 按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流) unpack(fmt, string) 按照给定的格式(fmt)解析字节流string,返回解析出来的tuple calcsize(fmt) 计算给定的格式(fmt)占用多少字节的内存 struct中支持的格式如下表: Format C Type Python 字节数 x pad byte no value 1 c char string of length 1 1 b signed char integer 1 B unsigned char integer 1 ? _Bool bool 1 h short integer 2 H unsigned short integer 2 i int integer 4 I unsigned int integer or long 4 l long integer 4 L unsigned long long 4 q long long long

C++类模板解析

旧时模样 提交于 2020-03-12 13:43:45
1.3 类模板 1.3.1 类模板语法 类模板作用: 建立一个通用类,类中的成员 数据类型可以不具体制定,用一个 虚拟的类型 来代表。 语法: template<typename T> 类 解释: template --- 声明创建模板 typename --- 表面其后面的符号是一种数据类型,可以用class代替 T --- 通用的数据类型,名称可以替换,通常为大写字母 示例: #include <string> //类模板 template<class NameType, class AgeType> class Person { public: Person(NameType name, AgeType age) { this->mName = name; this->mAge = age; } void showPerson() { cout << "name: " << this->mName << " age: " << this->mAge << endl; } public: NameType mName; AgeType mAge; }; void test01() { // 指定NameType 为string类型,AgeType 为 int类型 Person<string, int>P1("孙悟空", 999); P1.showPerson(); } int

C# 委托

妖精的绣舞 提交于 2020-03-08 09:44:01
一:为什么会有委托? 一般开发中,常见函数传参类型是int,string,char[]等,如果将一个函数作为参数,那么这个参数的类型就是委托类型。如下例: class Program { public static void Main(string[] args) { Thread th = new Thread(Method); //委托类型 //把一个函数作为参数传递 } static void Method() { } } 应用场景如下1: //使用委托实现功能:将list里大于3的数字移除。 public static void Main(string[] args) { List<int> list = new List<int>() { 1,2,3,4,5,6,7}; list.RemoveAll(i => i>3); foreach (var item in list) { Console.WriteLine(item); } } 二:如何定义委托? 定义ChineseSayHi,EnglishSayHi两个函数,入参为string类型,返回值为void类型。所以定义的委托类型SayHi也需要入参为string类型,返回值为void类型。 class Program { //委托使用关键字delegate进行定义 public delegate void SayHi

go学习笔记

孤者浪人 提交于 2020-03-05 16:27:12
变量 命名规范 变量需要以小驼峰方式来命名,列如: var studentName string 声明方式 直接声明类型 var childName string childName = "mark" 直接赋值 var childName = "mark" 简短赋值 childName := "mark" 简短赋值只能用在func内 常量 定义方式 const pi = 3.1415926 const ( n1 = 100 n2 n3 //n2,n3值与上面n1一致 ) iota go语言中常量计数器,只能在常量中使用。初始化时为0,const中每新增一行常量声明将使iota计数一次 const ( a = iota //0 b //1 c //2 _ d //4 ) 字符串 go语言中字符串使用双引号,单引号是字符 name := "mark" desc := "good" personDesc := name + desc personDesc := fmt . Sprintf ( "%s%s" , name , desc ) //字符串分割 info := "ddd/ddd/dddd/dd" ret := strings . Split ( info , "/" ) //包含 strings . Contains //判断前缀和后缀 strings . HasPrefix

C++ Primer 学习笔记 第七章 类

依然范特西╮ 提交于 2020-03-03 05:59:05
类的基本思想是数据抽象和封装。数据抽象是一种依赖于接口和实现分离的编程技术,类的接口包括用户所能执行的操作,类的实现则包括类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数。封装实现了类的接口和实现的分离,封装后的类隐藏了它的实现细节,即类的用户只能使用接口而不能访问实现部分。 类要想实现数据抽象和封装,首先需要定义一个抽象数据类型,在抽象数据类型中,由类的设计者负责考虑类的实现过程,而使用该类的程序员只需要抽象地思考类型做了什么,而无须了解类型的工作细节。 我们可以通过抽象数据类型提供的接口来完成某些操作,但如果一个类没有任何接口供用户使用,只有一些数据成员,那这个类就不是抽象数据类型,一旦定义了一些成员函数供类的用户使用,它就变成了了抽象数据类型。 定义和声明成员函数的方式与普通函数差不多,成员函数的声明必须在类的内部,但它的定义既可以在类的内部,也可以在类的外部。定义在类内部的函数是隐式的inline函数。 Sales_data类: struct Sales_data { string isbn ( ) const { return bookNo ; } Sales_data & combine ( const Sales_data & ) ; double avg_price ( ) const ; string bookNo ; unsigned units

来自mooon的最简单的日志类CSimpleLogger

心不动则不痛 提交于 2020-03-02 21:14:45
/** * 单个头文件,可即时独立使用 ,只要定义了宏NOT_WITH_MOOON,即不依赖于mooon * 简单的写日志类,非线程安全,提供按大小滚动功能 * 不追求功能,也不追求性能,只求简单,若要功能强、性能高,可以使用CLogger * * 使用方法: * 1) 构造一个 CSimpleLogger 对象 * CSimpleLogger logger (".", "test.log", 1024*1024, 10); * 2) 调用print方法写日志 * logger. print ("%s\n", "test"); */ #ifndef MOOON_SYS_SIMPLE_LOGGER_H #define MOOON_SYS_SIMPLE_LOGGER_H // 只要定义了NOT_WITH_MOOON宏, // 则本文件和mooon无任何关系,方便集成到自己的代码中 #define NOT_WITH_MOOON #if !defined(NOT_WITH_MOOON) #include <sys/config.h> #endif // NOT_WITH_MOOON #include <stdio.h> #include <stdarg.h> #include <time.h> #include <sstream> #if !defined(NOT_WITH_MOOON)

${fn: }函数

旧时模样 提交于 2020-02-16 18:34:36
函数名 函数说明 使用举例 fn:contains 判断字符串是否包含另外一个字符串 <c:if test="${fn:contains(name, searchString)}"> fn:containsIgnoreCase 判断字符串是否包含另外一个字符串(大小写无关) <c:if test="${fn:containsIgnoreCase(name, searchString)}"> fn:endsWith 判断字符串是否以另外字符串结束 <c:if test="${fn:endsWith(filename, ".txt")}"> fn:escapeXml 把一些字符转成XML表示,例如 <字符应该转为< ${fn:escapeXml(param:info)} fn:indexOf 子字符串在母字符串中出现的位置 ${fn:indexOf(name, "-")} fn:join 将数组中的数据联合成一个新字符串,并使用指定字符格开 ${fn:join(array, ";")} fn:length 获取字符串的长度 , 或者数组的大小 ${fn:length(shoppingCart.products)} fn:replace 替换 字符串中指定的字符 ${fn:replace(text, "-", "&#149;")} fn:split 把字符串按照指定字符切分 ${fn

《挑战30天C++入门极限》C++的iostream标准库介绍(2)

我的未来我决定 提交于 2020-02-13 04:59:53
C++的iostream标准库介绍(2)   接下来我们继续看一下 C++风格的串流控制 ,C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。 istringstream类用于执行C++风格的串流的输入操作。   stringstream类同时可以支持C++风格的串流的输入输出操作。   strstream类同时可以支持C风格的串流的输入输出操作。   istringstream类是从istream(输入流类)和stringstreambase(c++字符串流基类)派生而来,ostringstream是从ostream(输出流类)和stringstreambase(c++字符串流基类)派生而来,stringstream则是从iostream(输入输出流类)和和stringstreambase(c++字符串流基类)派生而来。   他们的继承关系如下图所示:   istringstream是由一个string对象构造而来,istringstream类从一个string对象读取字符。   istringstream的构造函数原形如下:   istringstream::istringstream(string str); //程序作者:管宁 //站点:www.cndev-lab

protobuf enum 的int 与 string 互转

走远了吗. 提交于 2020-02-12 18:45:21
c/c++ enum 介绍 说起c/c++ 的enum,比起python 真的是方便简洁 enum type{ type1 = 0, type2 } enum的元素对应的int 默认从0 开始依次增加, 除非手动指定起始值。 int val = type1; assert(val == 0) enum 内的元素是全局的,意味着在其它地方直接使用 type type_1 = type1 ; C++ 11 引入 enum class, 这样里面的元素不再是全局了 enum class int32_t type{ type1 = 0, type2 } 这样在使用的时候必须是 type type_1 = type::type1 , 并且可以指定底层类型例如uint8 等。 并且c++11 种enum 不能隐式转换了,必须强转 type type_1 = type::type1; int32_t type_impliticy_convert = type_1; // wrong int32_t type_impliticy_convert = static_cast<int32_t >(type_1); // ok enum方便,但是如果要转换成string很麻烦,必须一个个匹配。而且与int 互转而且还要考虑索引边界 引出正题,protocbuf 提供的enum 就比较方便了

Computer.h [友元] C++ 类

左心房为你撑大大i 提交于 2020-02-11 06:39:39
#pragma once #include #include <stdlib.h> #include using namespace std; //#include “ComputerService.h”//使用类的成员函数作为友元函数,必须包含其头文件 class Computer { public: string getcpu() { return cpu; } private: string cpu = “i5”; void friend upgrade(Computer* computer);//全局函数作为友元函数 //friend void ComputerService::upgrade1(Computer* computer);//类的成员函数作为友元函数 friend class ComputerService;//友元类 }; 来源: CSDN 作者: qq_44699909 链接: https://blog.csdn.net/qq_44699909/article/details/104219677