C# 给picturebox添加滚动条

1.将picturebox放在panel上;

2.将panel的AutoScroll设置为ture;

3.将picturebox的SizeMode设置为AutoSize;

C++ 数值转换库 Boost.lexical_cast

Boost组件lexical_cast

字符串→数值

经常看到有人询问如何在字符串类型和数值类型间进行转换的问题,也看到了许多不同的答案。下面先讨论一下从字符串类型到数值类型的转换。

  • 如何将字符串"123"转换为int类型整数123?答案是,用标准C的库函数atoi;
  • 如果要转换为long类型呢?标准C的库函数atol;
  • 如何将"123.12"转换为double类型呢?标准C的库函数atod;
  • 如果要转换为long double类型呢?标准C的库函数atold;
  • ……

后来有朋友开始使用标准库中的string类,问这个如何转换为数值?有朋友答曰,请先转换为const char*。我很佩服作答者有数学家的思维:把陌生的问题转化成熟悉的问题。(曾经有一则笑话,好事者问数学家:知道如何烧水吗?答:知道。把水壶加满水,点火烧。又问:如果水壶里已经有水了呢?答:先倒掉,就转化为我熟悉的问题了……)

C++ 格式化输出库 Boost.Format

Boost.Format 库可以作为定义在文件 cstdio 中的函数 std::printf() 的替代。 std::printf() 函数最初出现在 C 标准中,提供格式化数据输出功能, 但是它既不是类型安全的有不能扩展。 因此在 C++ 应用中, Boost.Format 库通常是数据格式化输出的上佳之选。

C++11 创建和使用unique_ptr

unique_ptr 不共享它的指针。它无法复制到其他 unique_ptr,无法通过值传递到函数,也无法用于需要副本的任何标准模板库 (STL) 算法。只能移动unique_ptr。这意味着,内存资源所有权将转移到另一 unique_ptr,并且原始 unique_ptr 不再拥有此资源。我们建议你将对象限制为由一个所有者所有,因为多个所有权会使程序逻辑变得复杂。因此,当需要智能指针用于纯 C++ 对象时,可使用 unique_ptr,而当构造 unique_ptr 时,可使用make_unique Helper 函数。

C++ STATIC用法

static的作用主要有两种:

第一个作用是限定作用域;第二个作用是保持变量内容持久化;

c语言中static的用法

全局静态变量

用法:在全局变量前加上关键字static,全局变量就定义成一个全局静态变量。

C++ 强大的背后

原文链接:http://www.cnblogs.com/miloyip/archive/2010/09/17/behind_cplusplus.html

C++ 解决 Warning C4251 问题

问题

这通常是由于以数据成员方式在DLL导出类中使用了模板类造成的。例如:

class A  
{  
private:  
    int m_i;  
};  
 
class __declspec(dllexport) B  
{  
private:  
    A m_a;  
}; 

解决方案有四种:

无视

无视它或者#pragma warnind( disable: 4251 )

流感下的北京中年

女儿:“姥爷怎么这么长时间还不回来?”

妈妈:“姥爷生病了,在医院打针。”

女儿:“姥爷是我最好的朋友,姥爷给我吃巧克力。”

“妈妈怎么哭了?”


本文逐日记录岳父从流感到肺炎、从门诊到ICU,29天阴阳两隔的经历。涉及就诊、用药、开销、求血、插管、人工肺(ECMO)等信息,希望大家用不上!

文件在不同文件系统间拷贝文件时间改变的问题

转自:文件在不同文件系统间拷贝文件时间改变的问题

我所做的系统需要比较文件时间和大小来确定两个文件是否相同,但在运行过程中,经常会发现文件时间被莫名其妙的修改了1-2秒。这个问题我一直没有仔细去研究,一直以为是微软的一个bug,直到最近发现这个问题不搞清楚实在是不行了,系统经常会从服务器下载相同的文件。今天仔细研究了一下这个问题,发现并不是微软操作系统的问题,而是文件系统设计的问题。

Protobuf3语法

syntax = "proto3";// 文件首个非空、非注释的行必须表明protobuf的版本,默认是proto2
 
//import
import "google/protobuf/wrappers.proto";
import "src/main/proto/other.proto"; //import 导入的定义仅在当前文件有效,也就是当前文件只能引用other.proto直接定义的
                                     //import public 导入的定义是可以被传递引用的,也就是other.proto中如果
                                    //通过import public引用的new.proto,当前文件是可以引用new.proto定义的内容
 
//package
package cn.sdut.majiatao; //指定包名后,会对生成的代码产生影响,以Java为例,生成的类会以你指定的package作为包名
                          // 同时引入的.proto文件的路径也需要改动
 
 
//option
option java_package = "cn.sdut.majiatao"; // 编译器为以此作为生成的Java类的包名,如果没有该选项,则会以pb的package作为包名
 
option java_multiple_files = true;// 该选项为true时,生成的Java类将是包级别的,
                                  //如果是false,则所有的message和service都将会是java_outer_classname的内部类
 
//option optimize_for = SPEDD;// 对生成的代码的一种优化,有三个值:SPEED,  CODE_SIZE, LITE_RUNTIME;
                            //表示希望生成代码是偏向执行速度,还是生成的文件大小,如果在app端,代码文件的大小是很重要的。
//message
// message 逻辑上类似于一个Java class,由多个字段(属性)构成,
// 每一个字段:由类型、名称组成,等号右边的数值不是默认值,而是数字签名码,不可重复
message SearchRequest {
    string query = 1;
    int32 page_number = 2;
    int32 result_per_page = 3;
    repeated string args = 4;// 等同于Java中的List<String> args
 
    // 每个枚举类有对应的数值,数值不一定是连续的。
    // 第一个枚举值必须是0并且至少有一个枚举值
    enum Corpus{
        option allow_alias = true;
        UNIVERSAL = 0;// 默认
        WEB = 1;
        IMAGES = 2;
        LOCAL = 3;
        // 如果一个数值需要对应多个枚举值,必须标明 option allow_alias = true
        FRAMEWORK = 1;
    }
    Result result = 5;// 字段类型也可以引用其他的message类型
}
 
 
message Result {
    string url = 1;
    repeated string snippets = 2;
}
 
//scalar value type
//类型
// 1. for strings, the default value is the empty string
// 2. for bytes, the default value is the empty bytes
// 3. for bools, the default value is false
// 4. for numeric types, the default value is zero
// 5. for enums, the default value s the first defined enum value, which must be 0
// 6. for message fields, the field is not set, Iys exact value is language-dependent
// 7. for repeated fields, the default value is empty list
//PS:if a scalar message field is set to its default, the value will not be serialized on the wire.
// 如果一个字段的值等于默认值(如bool类型字段为false),那么它将不会被序列化
 
// Any
// Any类型 需要import "google/protobuf/any.proto"
// Any类型可以允许包装任意的message类型
import "google/protobuf/any.proto";
message Response {
    google.protobuf.Any data = 1;
}
 
 
//Oneof
//Oneof 有一些字段最多只能有一个被设置,任何一个字段被设置,其他字段会自动成为默认值
// 该类型不支持repeated
message SampleMessage {
    oneof test_oneof {
        string last_name = 1;
        string family_name = 2;
    }
}
 
 
 
// Maps
message MapsMessage {
    // 除了float、bytes、枚举类型作为key,其他scalar value types都可以作为key
    // 除了map之外的任意类型可以作为value
    // map类型字段不支持repeated,value顺序是无序的
    map<string, SearchRequest> searchRequest = 1;
}