小编jud*_*rke的帖子

使用zlib解压缩.zip文件的简单方法

是否有一个简单的示例,说明如何解压缩.zip文件并将文件解压缩到目录?我目前正在使用zlib,虽然我知道zlib没有直接处理zip文件,但在zlibs的"contrib"库中似乎还有其他一些东西.我注意到并阅读了"minizip",在阅读了一些文档并查看了一些代码之后,我没有看到如何解压缩.zip文件并将文件解压缩到目录的简单示例.

我想找到一种独立于平台的方式,但如果不可能,那么我需要为windows和mac找到一种方法.

c++ zip zlib unzip

38
推荐指数
2
解决办法
10万
查看次数

使用Visual Studio 2010的libzip

有没有为Visual Studio 2010编译libzip的文档?我从libzip网站和Google看到的所有内容都没有返回任何结果.

c++

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

在Win32中确定按键和按键的最快方法是什么?

确定按键的最快方法是什么,以及如何确定按键是否被按住?窗口消息传递似乎很慢.请提供一个如何操作的示例,以及为什么它比替代方案更快.

要清楚,这是一个实时循环(模拟)所以我正在寻找最快的方法来确定是否按下了一个键,并检查它是否被保持.

c++ keyboard winapi user-input input

10
推荐指数
2
解决办法
3万
查看次数

捕获没有try/catch抛出的异常

我记得读过如何在不使用try/catch的情况下捕获异常.基本上,当通过derefencing空指针抛出异常(例如"未处理的异常")时,即使没有为异常编写try/catch,也会触发一个进程.我认为它与您编写的顶级库有关,然后包含在您的代码中.不幸的是,关于这种方法的文档似乎不存在,但我已经看到/听说过这样的方法之前已经完成.有人可以解释一下这是怎么做的吗?

c++ error-handling diagnostics exception-handling exception

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

为什么HSV-to-RGB算法的工作方式如何呢?

我已阅读维基百科关于从HSV转换为RGB的文章,但我不明白.为什么每个案例选项都是这样的,如果订单重要,为什么要这样订购呢?

c++ algorithm graphics colors

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

如何在libcurl中使用成员函数指针

我正在使用libcurl我在类中下载了文件,我希望看到一个进度函数.我注意到我可以设置一个典型的函数指针

curl_easy_setopt(mCurl, CURLOPT_PROGRESSFUNCTION, progress_func3);
Run Code Online (Sandbox Code Playgroud)

但是,我想将它设置为我的类的函数指针.我可以用编译来获取代码

curl_easy_setopt(mCurl, CURLOPT_PROGRESSFUNCTION, &MyClass::progress_func3);
Run Code Online (Sandbox Code Playgroud)

并且progress_func3函数将被调用.问题是,一旦它返回,就会出现"检测到缓冲区溢出!" 错误通过,说程序无法安全地继续执行,必须终止.(这是一个Microsoft Visual C++运行时库错误窗口,我正在使用Visual Studio 2010).

当我使用函数时,没有问题,但是当我使用成员函数指针时,我将收到此错误.如何在libcurl中使用成员函数指针?

c++ curl member-function-pointers function-pointers libcurl

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

为什么我在删除char时遇到内存异常*

我正在尝试编写自己的字符串类(所以我可以学到更多),同时这样做我注意到我遇到了如何删除char数据的问题,当程序关闭时,字符串的析构函数将被调用并且将会删除数据时出现堆错误

#include <string.h>

template<typename T>
class String
{
protected:
    T* mData;

public:
    String(const T* data);
    ~String();
};

template<typename T>
String<T>::String(const T* data)
{
    if(data != NULL)
    {
        mData = new T[strlen(data)];
        strcpy(mData, data);
    }
}

template<typename T>
String<T>::~String()
{
    if(mData != NULL)
    {
        delete [] mData;
        mData = 0;
    }
}

int main(void)
{
    String<char> Test("Test");

    return(0);
}
Run Code Online (Sandbox Code Playgroud)

c++ memory string algorithm memory-management

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

在Windows上获取鼠标光标位置和按钮状态

在Windows(Windows 7及更高版本)上获取鼠标光标位置或按钮状态的最合适方法是什么?我之前使用的是DirectInput,但我不再使用它而且不希望这样.我看到有GetCursorPos,但是,我没有看到任何鼠标按钮状态.我以前读过,只是读取窗口消息(例如WM_LBUTTONUP)对于实时应用程序来说被认为是"慢",所以我不知道任何其他选项.

c++ windows mouse winapi mouseevent

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

如何使一组向量正交化

我一直在阅读"3D游戏编程和计算机图形学的数学",并且有一章练习(第2章问题2),尽管重读了章节和研究,我似乎无法理解.我如何"正交以下一组矢量"

e1 =(sqrt(2)/ 2,sqrt(2)/ 2,0)

e2 =(-1,1,-1)

e3 =(0,-2,-2)

另外,"正交一组矢量"是什么意思?

math vector orthogonal

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

我的代码中是否存在无效的内存访问?

我最近在我的代码中遇到崩溃,我不知道它是如何以及为什么崩溃并开始使用静态分析器,然后我开始使用Intel Inspector XE 2013.我在代码中一直遇到相同的"无效内存访问"我开始将我的代码缩减到尽可能小的形式以使其重现,在那里我终于达到了一个点,似乎我的代码中存在"无效的内存访问",但前提是我的类有一个析构函数.有趣的是,我的"无效内存访问"发生在它试图删除的地址之前的地址上.这结束了"无效的内存访问"中的代码实际上并没有崩溃我的代码,但我想我会解决这个潜在的问题包住它是一种具有雪球影响.我的代码是

class Group {
public:
    Group() {}
    ~Group() {} // When this line is not here, there will not be an "Invalid memory access"
};

int main() {
    Group** groups = new Group*[3];

    groups[0] = new Group();
    groups[1] = new Group();
    groups[2] = new Group();

    for(unsigned int i = 0; i < 3; ++i)
        delete [] groups[i];

    delete [] groups;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

"无效内存访问"问题将在第一次尝试"delete [] group [i]"时被标记(因此我将等于0).它是一个标记在所述存储器地址是"0x003e30ec",其中作为组[0]实际上是"0x003e30f0",这是前面为0x4.每当我运行这个测试时,它总是在0x4的差异.

我的问题是,我的代码实际上是否存在任何错误,我正在不正确地阅读或写入内存,或者这个人只是英特尔Inspector XE 2013的糟糕结果(我在Visual Studio 2012 Update 1上)?

对于那些对我上面的例子的内存表感兴趣的人,它是以下内容

groups == …
Run Code Online (Sandbox Code Playgroud)

c++ memory destructor inspector

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

为什么析构函数在expicitly调用时不会被模板化指针调用?

在我下面的测试用例中,我很困惑为什么析构函数似乎没有被调用,即使我明确地调用它.我注意到只有在模板类型是指针时才会发生这种情况.

代码(内存泄漏,但我试图让最小的例子成为可能)

#include <iostream>
using namespace std;

class A {
public:
    A() {}
    ~A() { cout << "A Destructor"; }
};

template<typename Type>
class TemplateTest {
protected:
    Type* start;
    Type* end;
    Type* iter;
public:
    void Generate(unsigned int count) {
        start = new Type[count];
        end = start + count;
        iter = start;
    }
    void DestroyAll() {
        for(; start < end; ++start) {
            (*start).~Type();
        }
    }
    void Push(Type val) {
        *iter = val;
        iter++;
    }
};

int main() {
    cout << "Non-pointer …
Run Code Online (Sandbox Code Playgroud)

c++ templates destructor

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