小编Aze*_*eem的帖子

QPainter :: save()和QPainter :: restore()有什么作用?

我不能肯定它是什么,QPainter确实,当我调用save()restore().

难道节省它绘制的图像,或只是保存等有关的信息penWidthcolor等?
我可以用它来恢复上一个油漆事件的图像吗?

qt

9
推荐指数
3
解决办法
1万
查看次数

C++:如果我重载new运算符,我是否也必须重载delete运算符?

我正在阅读关于SO的问题,在其中一个答案中,它被提到:

如果找不到明确的匹配解除分配函数,则传播异常不会导致释放对象的内存.

所以,如果我只是重载我的new运算符而不是delete运算符,那么是否delete会创建并调用任何默认运算符; 或者,我是否还必须delete明确地编写运算符.

c++ new-operator dynamic-memory-allocation delete-operator

9
推荐指数
1
解决办法
197
查看次数

获取最后一条CVS提交的消息或差异

我想知道如何轻松地在CVS模块中获得最后的更改.

cvs version-control

8
推荐指数
2
解决办法
1万
查看次数

使用 zlib 进行 GZIP 压缩到缓冲区

我想使用gzip压缩内存缓冲区并将压缩的字节放入另一个内存缓冲区。我想在 HTTP 数据包的有效负载中发送压缩缓冲区Content-Encoding: gzip。我可以使用zlib进行 deflate 压缩(compress()函数)轻松地做到这一点。但是,我没有看到可以满足我需要的 API ( gzip )。zlib API 是压缩并写入文件gzwrite())。但是,我想压缩并写入缓冲区。

有任何想法吗?

我在 Linux 上使用 C 语言。

c linux gzip zlib content-encoding

8
推荐指数
2
解决办法
8761
查看次数

nlohmann json,与嵌套结构相互转换

我在嵌入式项目中使用nlohmann json(现代 C++ 的 JSON) 。操作系统是Mongoose操作系统。Mongoose 有一个很好的配置系统,其中配置数据被处理并布置在 mos.yml 文件中。该文件在构建时被转换为结构和访问器函数。因此,我可以将配置数据作为结构获取,其中包含其他嵌套结构。我需要将其转换为 JSON。

我的理解是 nlohmann::json 能够将 JSON 与我自己的类型相互转换,我所要做的就是提供to_json()from_json()方法,如下所述:

nlohmann json 文档(类型转换示例)

这个示例代码非常简单:

struct person {
    std::string name;
    std::string address;
    int age;
};

void to_json(json& j, const person& p) {
    j = json{{"name", p.name}, {"address", p.address}, {"age", p.age}};
}
Run Code Online (Sandbox Code Playgroud)

但给出的例子非常简单。我的类型更复杂,我无法弄清楚更复杂结构的语法,例如这个(为简洁起见摘录):

struct mgos_config_mytype {
  struct mgos_config_mytype_input input;
  struct mgos_config_mytype_speed speed;

  /* many others omitted */

};

struct mgos_config_mytype_input {
  struct mgos_config_mytype_input_wired_buttons wired_buttons;
};

struct mgos_config_mytype_input_wired_buttons {
  const char * …
Run Code Online (Sandbox Code Playgroud)

c++ json c++11 nlohmann-json

8
推荐指数
1
解决办法
2万
查看次数

抛出异常时是否释放内存?

我正在与一些同事讨论在动态分配的类中抛出异常时会发生什么.我知道malloc被调用,然后是类的构造函数.构造函数永远不会返回,所以会发生什么malloc

请考虑以下示例:

class B
{
public:
    B()
    {
        cout << "B::B()" << endl;
        throw "B::exception";
    }

    ~B()
    {
        cout << "B::~B()" << endl;          
    }
};

void main()
{
    B *o = 0;
    try
    {
        o = new B;
    }
    catch(const char *)
    {
        cout << "ouch!" << endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

malloced内存会发生什么o,它会泄漏吗?CRT是否捕获构造函数的异常并释放内存?

干杯!
丰富

c++ constructor exception handler

7
推荐指数
2
解决办法
2132
查看次数

Visual Studio 2008搜索并替换正则表达式

我有一个很大的解决方案,需要更换很多行.在Visual Studio中,您可以使用正则表达式进行搜索和替换.

我想替换以下行:

rst.Fields("CustomerName").Value
rst.Fields("Address").Value
rst.Fields("Invoice").Value
Run Code Online (Sandbox Code Playgroud)

至:

row("CustomerName").ToString()
row("Address").ToString()
row("Invoice").ToString()
Run Code Online (Sandbox Code Playgroud)

从而保持动态文本部分,这可以变化.

这可能吗?怎么样?

更新,解决方案:
搜索:rst.Fields{\(.*\)}\.Value
替换:rst\1.ToString()

谢谢JaredPar!

regex replace visual-studio-2008 visual-studio

7
推荐指数
1
解决办法
1786
查看次数

std :: vector resize(0)或clear() - 但保持它的容量

我正在将许多对象合并到包含渲染数据(网格)的单个向量中.这个向量被清除并重新填充每个帧(好吧,差不多).

问题是,在我的情况下,清除然后再次保留向量大小会对性能产生巨大影响,因为clear()也可能会改变容量.

换句话说,我需要控制向量的容量何时发生变化.我想保留旧容量很长一段时间,直到我决定自己是时候改变它了.

我看到两个选择:

  • 弄清楚如何控制std :: vector的容量何时即将发生变化
  • 为大内存对象实现一个内存池,它将获取<=所需大小的大型数据对象,并根据需要重用/释放它

更新

另外,如果调用调整大小(10),然后调用调整大小(5)(仅用于说明,将实际数字乘以数百万),该怎么办?

稍后调用resize(5)会导致向量重新分配吗?

c++ vector c++11

7
推荐指数
1
解决办法
9198
查看次数

为什么当模板类继承自另一个模板类时,需要重新指定typedef并且函数调用是否合格?

当模板类继承自另一个模板类时,必须再次重新定义基类中的typedef(即它们不会自动继承),并且需要限定基类中的函数调用.这是为什么?这不是明确的吗?

因此,如果我有20个模板类,都定义了相同的typedef,我无法引入包含这些定义的基类并从中继承,因为我必须在每个类中重新定义typedef,这会破坏目的.这使得源代码不必要地冗长.

我可以看到这个已经在这个问题中讨论过,但我不明白这个评论

C++名称查找规则指定仅在模板化基类中搜索名称(如果它取决于模板参数(如果它是"依赖名称")).如果名称不依赖于模板参数,则不会在那里搜索.

这是什么原因?对我来说完全是无稽之谈.

也许,下面的代码片段会更好地说明我的问题:

#include <iostream>

template <unsigned N, typename T>
struct A
{
   typedef T U;
   static void foo(T x) { std::cout << N + x << "\n"; }
};

template <unsigned N, typename T>
struct B : public A<N, T>
{
    // Why do I have to redeclare U? Isn't is unambiguous already?
    typedef typename A<N, T>::U U;

    //  why do I have to specify B::? Isn't it unambiguous already?
    static void zoo(U x) …
Run Code Online (Sandbox Code Playgroud)

c++ templates typedef

7
推荐指数
1
解决办法
120
查看次数

C++ std::stoul 不抛出异常

我有一个函数来检查字符串是否有效unsigned int

unsigned long int getNum(std::string s, int base)
{
    unsigned int n;
    try
    {
        n = std::stoul(s, nullptr, base);
        std::cout << errno << '\n';
        if (errno != 0)
        {
            std::cout << "ERROR" << '\n';
        }
    }
    catch (std::exception & e)
    {
        throw std::invalid_argument("Value is too big");
    }
    return n;
}
Run Code Online (Sandbox Code Playgroud)

0xfffffffff但是,当我输入诸如(9 f's)之类的值时,errno仍然为 0(并且不会引发异常)。为什么会这样呢?

c++ string-conversion

7
推荐指数
1
解决办法
7149
查看次数