小编Gri*_*wes的帖子

c ++何时将方法放在类的旁边

我在c ++应用程序中看到过一次只使用带有头文件和源文件的命名空间声明,如下所示:

#ifndef _UT_
#define _UT_

#include <string>
#include <windows.h>

namespace UT 
{
    void setRootPath(char* program_path, char* file_path);
    char * ConvertStringToCharP(std::string str);
};

#endif

//and then in UT.cpp
#include "UT.h"

namespace UT 
{
    char * ConvertStringToCharP(std::string str)
    {
        char * writable = new char[str.size() + 1];
        std::copy(str.begin(), str.end(), writable);
        writable[str.size()] = '\0';  
        return writable;
    }

    void setRootPath(char* program_path, char* file_path) 
    {
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

比使用静态方法定义经典类更好吗?
还是只是简单的课程?
剂量这种方法对编译器链接器有什么好处?

此命名空间中的方法被称为分配.

c++ namespaces

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

直接以二进制形式执行计算机指令

在C.我需要一种在程序运行时直接执行计算机指令的方法.我知道如何以二进制编写指令的唯一方法是通过十六进制编辑器,然后将该文件作为应用程序运行.我如何使用程序编写二进制文件,然后从它们执行它而无需创建新的执行过程.看起来他们应该是一个简单的方法来做到这一点,但无论我在哪里,我都找不到它.

我能想到的另一种方法是通过内联汇编,但在我当前的项目中,这将是一个缺点,直接使用二进制执行是最好的方法.(这可能需要Windows上的驱动程序吗?如何在linux上执行?换句话说,跨平台方法会很好)

谢谢.

c binary assembly

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

在c ++中对某种列表进行排序的最快方法是什么?

我有一个结构

typedef struct  
{ 
    int id;  
    string name;  
    string address;
    string city;  
    // ...
} Customer;
Run Code Online (Sandbox Code Playgroud)

我将有多个客户,所以我需要将这些结构存储在某种列表中,然后我需要按id排序.这里可能有多种解决方案,我自己也有一些想法,但我正在寻找性能方面的最佳解决方案.

c++ sorting performance list data-structures

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

如何初始化类中的char指针?

在处理char指针时我感到困惑.请看下面的代码:

class Person
{
    char* pname;
public:
    Person(char* name)
    {
        //I want to initialize 'pname' with the person's name. So, I am trying to
        //achieve the same with different scenario's

        //Case I:   
        strcpy(pname, name); // As expected, system crash.

        //Case II: 
        // suppose the input is "ABCD",  so trying to create 4+1 char space
        // 1st 4 for holding ABCD and 1 for '\0'.
        pname = (char*) malloc(sizeof(char) * (strlen(name)+1) );
        strcpy(pname, name);

        // Case III: 
        pname = (char*) malloc(sizeof(char)); …
Run Code Online (Sandbox Code Playgroud)

c++

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

给定程序中哪里错了?

这是我的程序,用于查找给定集的所有子集.为了解决它,我使用了递归.但是当我在windowsblocks上编译它时.它给

此应用程序已请求Runtime以不寻常的方式终止它.

并在gcc编译器中它没有显示任何答案,没有响应.

#include <iostream>
#include <vector>
#include <string>

using namespace std;

vector<string> findAllSubset(char c, vector<string> v) {
    int size = v.size();
    if(size == 1) {
        v.push_back("");
        return v;
    }
    c = v[size-1][0];
    v.pop_back();
    v = findAllSubset(c, v);

    for(int i = 0; i < v.size(); i++) {
        string s= "";
        if(v[i].size() == 0){
            s += c;
            v.push_back(s);
        }
        else {
            s += v[i] + c;
            v.push_back( s );
        }
    }
    return v;
}

main() {
    vector<string> v, ans;
    char c …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm recursion std

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

在Java应用程序中嵌入可执行文件

如何在Java应用程序中嵌入二进制文件(可执行,准确)?有没有办法在编译期间读取文件,或者我是否必须将十六进制转储复制到应用程序的源代码中?

java executable exe jar

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

内联汇编,外出指令

我试图导出.dll文件并尝试在我的c#应用程序中使用它来将数据写入端口.在我的.cpp文件中(创建.dll)如果我使用"out"命令,则会出现"错误C2415:不正确的操作数类型"错误消息.你知道为什么我不能使用这个"out"命令吗?("mov"命令运行良好顺便说一句)

请参阅下面的代码:

#include <stdio.h>

extern "C" __declspec(dllexport) void enableWatchDog()
    _asm {
          out 66,41
          out 62,4
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ assembly

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

是否可以设置std :: tr1 :: tuple的默认值?

(我正在使用Visual C++ + 2010)假设我已经定义了这样的元组:

typedef std::tr1::tuple<
int      //i want to set its default value to 9
, double //i want to set its default value to 3.3
, int    //i want to set its default value to 2
, double //i want to set its default value to -7.2
> Mytuple; 
Run Code Online (Sandbox Code Playgroud)

我可以在结构中做到这一点.但我想知道是否可以这样做std::tr1::tuple.
此外,我想知道什么时候使用std::tr1:tuple或者struct?

有人可以帮帮我吗?

c++ std visual-studio-2010 visual-c++ c++11

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

c ++ 11用户定义的文字,与编译/执行二分法冲突

我知道ISO C标准在分离翻译行为和执行行为方面做了大量工作,部分原因是为了确保交叉编译器不必承载每个目标的执行环境.

这就是说,与正在运行的程序相比,编译器可用的信息有限.这限制了您可以在源代码中执行的操作,例如不基于此函数的返回值初始化变量:

int twice (int val) { return val * 2; }
int xyzzy = twice (7);
int main () { printf ("%d\n", xyzzy); return 0; }
Run Code Online (Sandbox Code Playgroud)

我很好奇的是C++ 11中用户定义的文字如何适合这个方案.由于文字评估依赖于一个函数,所以要阻止该函数执行以下操作:

  • 返回一个随机值(即使基于输入,例如42_roughly给出40到44之间的值)?
  • 有副作用,比如改变全局变量?

是否必须调用函数意味着在编译时计算这些函数并不是真正的文字吗?

如果是这样的话,这些文字比任何其他函数调用的优点是什么.换句话说,为什么:

int xyzzy = 1101_1110_b;
Run Code Online (Sandbox Code Playgroud)

优选:

int xyzzy = makeBin ("1101_1110");
Run Code Online (Sandbox Code Playgroud)

c++ user-defined-literals c++11

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

在C中快速排序

我正在尝试对我的项目使用快速排序,但它不起作用.我无法弄清楚bug的位置.有谁可以帮我搞清楚吗?谢谢.

void quicksort(int arr[],int a, int b){
    if(a<=b){
        int key=arr[a];
        int index=a;
        int i=a, j=b;
        while(i<=j){
            for(;arr[j]>key;--j);
            int temp=arr[j];
            arr[j]=key;
            arr[index]=temp;
            index=j;
            for(;arr[i]<key;++i);
            temp=arr[i];
            arr[i]=key;
            arr[index]=temp;
            index=i;
            }
        quicksort(arr,a,index);
        quicksort(arr,index,b);
        }
    else return;
} 
Run Code Online (Sandbox Code Playgroud)

c

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