小编Kir*_*sky的帖子

const char数组*

我正在编写一个使用RRD库的C++程序,这些库需要一个'const char*'数组来实现它们的功能.我以为我可以声明数组,然后初始化数组的每个元素,但更改一个,更改所有元素.显然我错过了一些东西.这是一个类似于我正在编写的代码的示例(即它表现出相同的问题).

string intToString(long i)
{
    stringstream ss;
    string s;
    ss << i;
    s = ss.str();
    return s;
}

int main(){
        const char* av[5];
        int i = 0;
        int j = 0;
        for(i=0;i<5;i++){
                j= 0;
                av[i] = intToString(i).c_str();
                for(j=0;j<5;j++){ cout << j << " : " << av[j] << endl;}
        }   

}
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

c++

4
推荐指数
2
解决办法
6540
查看次数

线程被销毁时的通知

有没有办法在应用程序中获取线程不再运行(已返回)的通知?
我知道这在内核模式下是可行的(使用PsSetCreateThreadNotifyRoutine),但有没有办法从用户模式知道这一点,只使用Win32 API?

问题是我无法控制线程中的代码,因为我的模块是库的一部分.让驱动程序监控系统不会太难,但即使对于使用我的库的基本应用程序,用户安装驱动程序也很烦人.

我的代码使用TLS存储,在Linux/Unix下,pthread_key_create可以获取指向线程被销毁时调用的函数的指针.但是TlsAlloc(Windows)没有这样的......

提前致谢!

c++ winapi multithreading

4
推荐指数
2
解决办法
2416
查看次数

ms vc ++ iostream编译错误

以下代码在microsoft visual C++ 2010中表达:

#include <iostream>
//using namespace std;

int main(int argc, char **argv)
{


 return(0);

}
Run Code Online (Sandbox Code Playgroud)

给了我错误:

1>C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cmath(19): error C2061: syntax error : identifier 'acosf'
...
1>C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cmath(41): fatal error C1003: error count exceeds 100; stopping compilation
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

如果注释掉"#include"则编译.我从现有代码创建了一个项目并编辑到上面.

c++ visual-studio

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

这是从一组给定数字中产生选择的最佳方法吗?

例如,如果给出所有选择在1到5之间,答案就是这样的..

1,2,3,4,5,  
1-2,1-3,1-4,1-5,2-3,2-4,2-5,3-4,3-5,4-5,  
1-2-3,1-2-4,1-2-5,1-3-4,
.....,
1-2-3-4-5.
Run Code Online (Sandbox Code Playgroud)

谁能建议快速算法?

c c++ algorithm

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

32位Windows上的整数大于4294967295

我试图通过构建一个简单的算术计算器应用程序来掌握C++基础知识.现在我正在试图弄清楚如何使它能够在32位Windows上处理大于4294967295的整数.我知道Windows的集成计算器能够做到这一点.我错过了什么?

请注意,此应用程序应与MSVC编译器和g ++(MinGW/GCC)兼容.

谢谢.

c++ integer

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

如何防止控件更改 Z 顺序?

我在 .Net 中有用户控制权,我在 WndProc 中使用命中测试来允许在运行时用鼠标调整它的大小。

问题是在命中测试成功(鼠标按下、拖动以调整大小、鼠标释放)之后,控件在 Z 顺序中向上跳跃并破坏了它在表单中的位置。

我需要命中测试,因为它是一个非常定制的控件。

WndProc 有没有办法阻止控件改变它的 Z 顺序?

谢谢。

命中测试代码:

protected override void WndProc(ref Message m) {
  if (!DesignMode && Sizeable && (m.Msg == Win32Wrapper.WM_NCHITTEST)) {
    Point Hit = new Point((int)m.LParam & 0xFFFF, (int)m.LParam >> 16);
    Hit = this.PointToClient(Hit);
    int DistToBorder = 5;
    if (Hit.X < DistToBorder) {
      if (Hit.Y < DistToBorder) {
        m.Result = (IntPtr)Win32Wrapper.HTTOPLEFT;
        return;
      }
      if (Hit.Y > this.ClientRectangle.Bottom - DistToBorder) {
        m.Result = (IntPtr)Win32Wrapper.HTBOTTOMLEFT;
        return;
      }
      m.Result = (IntPtr)Win32Wrapper.HTLEFT;
      return;
    } …
Run Code Online (Sandbox Code Playgroud)

c# windows messaging winapi

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

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

如果我了解Windows内核,我该怎么办?

目前我处于可以学习Windows内核编程的阶段,但我想知道我可以做哪些类型的工作?

对于Linux内核,到目前为止只有一堆驱动程序在那里工作相关的工作.

windows kernel

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

std :: map,引用,指针和内存分配

我正忙着使用map和valuetype分配.

考虑这个简单的类:

class Column {
private:
    char *m_Name;
public:
    // Overrides
    const char *Name(){
        return this->m_Name;
    }

    // Ctors
    Column(const char *NewName){
        this->m_Name = new char[strlen(NewName) + 1];
        strcpy(this->m_Name, NewName);
    }

    // Dtors
    ~Column(){
        cout << "wtf?\n";
        delete this->m_Name;
    }
};
Run Code Online (Sandbox Code Playgroud)

现在我有这张地图:

// Typedefs
typedef std::map<int, Column> ColumnContainer;
ColumnContainer *m_Container;
Run Code Online (Sandbox Code Playgroud)

当我这样称呼:

Column *c = new Column("Test");
cout << "CREATED: " << c->Name() << "\n";
it = this->m_Container->insert(std::make_pair(0, *c)).first;
cout << "AGAIN: " << c->Name() << "\n";
Run Code Online (Sandbox Code Playgroud)

控制台正在打印"wtf?" 插入地图后.

它似乎正在摧毁这个专栏.这是正确的吗?

或者我做错了什么? …

c++ memory pointers reference map

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

我在一个文件中有一个字符串"abc = 14,22 xyz = 33,tdc = 48".如何在C++中将其分隔为字符串及其对应的值?

"abc=14,22 xyz=33, tdc=48"在文件中有一个字符串.如何在C++中将其分隔为字符串及其对应的值?喜欢 -

abc = 14,22
xyz = 33
tdc = 48
Run Code Online (Sandbox Code Playgroud)

c++

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