小编ont*_*cks的帖子

从函数返回char*

以下是3个功能.main()按预期打印出来.现在,在mycharstack()中,字符串存储在堆栈中我猜,因为"ch"超出范围,它应该不能返回字符串.它是如何正常工作的?我想存储在mychar()中的字符串也在堆栈上.它应该正常工作吗?我猜在代码和内存泄漏中还有其他错误,如果有的话请告诉我.我可以使用std :: string更清洁,更轻松.但我想了解char*发生了什么.

#include <iostream>
using namespace std;

char* mychar()
{
    return "Hello";
}

char* mycharstack()
{
    char* ch = "Hello Stack";
    return ch;
}

char* mycharheap()
{
    char* ch = new char;
    ch = "Hello Heap";
    return ch;
}

int main()
{
    cout << "mychar() = " << mychar() << endl;
    cout << "mycharstack() = " << mycharstack() << endl;
    cout << "mycharheap() = " << mycharheap() << endl;

    system("PAUSE");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++

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

如何从合并请求中删除跟踪文件

我已提交一些文件并将其推送到远程功能分支并创建了合并请求。我用了

git commit -a -m "blah blah"
git push
Run Code Online (Sandbox Code Playgroud)

所以它推送了所有修改的文件。其中一个文件(主文件中的现有文件)不应被推送(例如可执行文件)。如何从合并请求中删除此文件,以便当 MR 合并到 master 时,不需要的文件不会被合并(就好像它从未存在于 MR 中一样)。我发现此页面提到了以下命令

git rm {filename} --cached
git commit -m "[...]"
git push
Run Code Online (Sandbox Code Playgroud)

我尝试了这些命令,但没有看到 Gitlab 的合并请求中删除的文件。这是正确的做法吗?

更新1:

deleted通过上述命令,我可以看到上面提交中提到的文件。但是当我将更新的 MR 合并到 master 中时,该文件也会从 master 中删除。

更新2:

删除了导致混乱的句子并更新了标题

git gitlab

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

Gitlab说有合并冲突,但实际上没有

我从master创建了一个分支。向分支做出了四次提交。第三次提交后,我创建了一个合并请求。直到第三次提交,Gitlab 从未抱怨过合并冲突。在第四次提交时,它突然抱怨合并冲突。主人没有任何变化。

在此输入图像描述

$ git branch
  master
* mylocalbranch

$ git rebase master
  Current branch mylocalbranch is up to date.
    
$ git merge master
  Already up to date.

$ git mergetool
  No files need merging
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我的合并请求已完全获得批准。我对存储库具有写权限。合并按钮呈灰色。我不知道如何解决 Gitlab 抱怨的冲突。不知道如何掌握我的代码。

git git-merge gitlab git-merge-conflict

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

将一个枚举映射到另一个枚举

存在一个现有的枚举

typedef enum
{
    myEnum_front = 11,
    myEnum_back = 19
} myEnumSides;
Run Code Online (Sandbox Code Playgroud)

我想创建另一个枚举new_myEnumSides,它的值应该映射到 的值myEnumSides。从今往后,我将使用new_myEnumSides而不是myEnumSides. 下面的代码可以用于此目的吗?

typedef enum
{
    new_myEnum_front = myEnumSides::myEnum_front,
    new_myEnum_back = myEnumSides::myEnum_back
} new_myEnumSides;
Run Code Online (Sandbox Code Playgroud)

或者,还有更好的方法?

c++ enums

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

std ::对象或对象指针的映射?

我有两个选项来创建一个std地图.我可以使用两种类型的地图.

1.    std::map<A, std::string>    
2.    std::map<A*, std::string>
Run Code Online (Sandbox Code Playgroud)

哪个A是类对象

稍后在代码中我将不得不执行查找操作.

1.    std::map<A, std::string>   myMap1;
          if(myMap1.find(A_obj) != myMap1.end())
          {
          }

2.    std::map<A*, std::string>   myMap2;
          if(myMap2.find(A_obj_ptr) != myMap2.end())
          {
          }
Run Code Online (Sandbox Code Playgroud)

我想知道建议创建哪一个.在这两个中的哪一个中,我不必重载类中的任何运算符以A使查找操作起作用.当任何运算符没有过载时,哪些在插入操作上会出现问题.

如果有帮助,这是A类

class A
{
    private:
        std::vector<std::string> m_member;

    public:
        A(std::vector<std::string> input);  
};
Run Code Online (Sandbox Code Playgroud)

c++ class map find

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

通过struct指针将结构的成员初始化为零

typedef struct {  
double firstArray[3];
double secondArray[4][4];
bool   thirdArray[2];    
} myStruct;
Run Code Online (Sandbox Code Playgroud)

我知道我们可以使用在一行中将数​​组的所有值初始化为零 int myArray[10] = { 0 };

我有一个函数来初始化myStruct中数组的所有元素为零和假(对于bool).

void initializeElementsOfStruct(myStruct* str)
{
str->firstArray[0] = 0.0;
str->firstArray[1] = 0.0;
str->firstArray[2] = 0.0;
...
}
Run Code Online (Sandbox Code Playgroud)

而不是上面或使用for循环,我如何在一个内衬中做到这一点?

编辑:结构也可能包含非原始数据类型.

c c++ arrays struct

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

Perl q函数或单引号不能正确返回UNC路径的字符串文字

Perl的q函数或单引号应该将字符串文字返回为typed(除外\').但是对于以下场景,它无法正常工作.我想打印以下UNC路径

\\dir1\dir2\dir3
Run Code Online (Sandbox Code Playgroud)

所以我用过

my $path = q(\\dir1\dir2\dir3); 
Run Code Online (Sandbox Code Playgroud)

要么

my $path = '\\dir1\dir2\dir3'; 
Run Code Online (Sandbox Code Playgroud)

但这会在前面跳过一个反斜杠.所以,如果我打印它,即print $path;它打印

\dir1\dir2\dir3
Run Code Online (Sandbox Code Playgroud)

我想知道为什么?我必须在UNC路径的开头键入3或4个反斜杠,以使其按预期工作.我错过了什么?

perl string-literals

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

类型转换枚举为整数,反之亦然

我有一个枚举

enum MYENUM
{
  VAL_1 = 0,
  VAL_2,
  VAL_3
};
Run Code Online (Sandbox Code Playgroud)

和两个分别具有整数和枚举作为参数的函数

void MyIntegerFunction(int integerValue)
{
...
}

void MyEnumFUnction(MYENUM enumValue)
{
...
}
Run Code Online (Sandbox Code Playgroud)

我有两个变量

int intVar = 10;
MYENUM enumVar = VAL_2;
Run Code Online (Sandbox Code Playgroud)

下面两种情况中的哪一种在调用这些函数时进行类型转换是正确的,为什么?

Case#1. MyEnumFUnction(static_cast<MYENUM>(intVar));
Case#2. MyIntegerFunction(static_cast<int>(enumVar));
Run Code Online (Sandbox Code Playgroud)

PS:没有C++ 11

c++ enums casting

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

跳过批处理脚本中的多行

我只想从命令的输出中打印出某一行。让我们以ipconfig命令为例。这将返回很多行。

Windows IP Configuration


Wireless LAN adapter Wireless Network Connection:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : ab80::456d:123e:5ae5:9ab6%15
   IPv4 Address. . . . . . . . . . . : 192.168.1.33
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.1.1

Ethernet adapter Local Area Connection:

   Media State . . . . …
Run Code Online (Sandbox Code Playgroud)

windows cmd batch-file command-prompt

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

C++ regex string literal with capturing group

I have a std::string containing backslashes, double quotes. I want to extract a substring using capture group, but I am not able to get the syntax right. e.g.

std::string str(R"(some\"string"name":"john"\"lastname":"doe")");  //==> want to extract "john"
std::regex re(R"(some\"string"name":")"(.*)R"("\"lastname":"doe")");    //==> wrong syntax

std::smatch match;
std::string name;
if (std::regex_search(str, match, re) && match.size() > 1)
{
    name = match.str(1);
}
Run Code Online (Sandbox Code Playgroud)

c++ regex

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