以下是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) 我已提交一些文件并将其推送到远程功能分支并创建了合并请求。我用了
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:
删除了导致混乱的句子并更新了标题
我从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 抱怨的冲突。不知道如何掌握我的代码。
存在一个现有的枚举
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)
或者,还有更好的方法?
我有两个选项来创建一个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) 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循环,我如何在一个内衬中做到这一点?
编辑:结构也可能包含非原始数据类型.
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个反斜杠,以使其按预期工作.我错过了什么?
我有一个枚举
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
我只想从命令的输出中打印出某一行。让我们以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) 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)