草庐IT

c++ - 我应该如何为 c 字符串 char 数组分配内存?

因此,在尝试学习如何在C++中使用C字符串时,我遇到了内存分配问题。这里的想法是创建一个格式为(s1+sep+s2)的新字符串我使用的文本提供了标题,所以我无法更改它,但我在尝试设置charstr[]的大小时遇到​​了问题。我收到一条错误消息,指出sLength不是常量,因此不能用于设置数组的大小。我对C++比较陌生,所以这是一个由两部分组成的问题。这个策略实际上是在为新数组分配内存吗?如果无法使用strlen(char*)获取常量值,如何正确设置数组大小?char*concatStrings(char*s1,char*s2,charsep){intsLength=strlen(s1)

c++ - 如何为 lambda 创建 'reference'?

我想捕获对lambda的“引用”,我认为函数指针可以解决问题,如下所示:int(*factorial)(int)=[&](intx){return(x但我得到cannotconvertfrommain::lambdatoint(_cdecl*)(int).那么指向lambda的正确方法是什么? 最佳答案 由于lambda不是无状态的,因此不能将其转换为函数指针。请改用std::function。std::functionfactorial=[&](intx){return(x 关于c++

c++ - 如何为我的类生成一个 std::get 类函数?

比如我有一个类structA{inta;boolb;};我想生成一个模板函数来获取它的元素(比如std::get来获取元组元素)templateautoGet(T&t);templateint&Get(A&a){returna.a;}templatebool&Get(A&a){returna.b;}intmain(){Aa;Get(a)=10;Get(a)=true;return0;}上面的代码不起作用。挑战在于我不知道任意类的Get返回类型。有什么办法可以实现吗?谢谢。 最佳答案 假设您不介意以“手动方式”进行此操作,您可以非常简

c++ - 如何为 C++ 元组编写折叠/求和函数?

我想为std::tuple编写一个fold函数,它可以计算例如给定元组中所有元素的总和(或乘积)。例如,给定std::tuplet=std::make_tuple(1,2);我想计算autos=sumT(t);//giving3我试过但无法编译下面的模板编程(c++11/1z)代码。我还尝试为我的其他问题(HowtoperformtuplearithmeticinC++(c++11/c++17)?)调整已接受的答案,但无法弄清楚如何在这种情况下使用std::index_sequence。我遇到的问题是:1)我无法弄清楚类型,例如如何使用第一个元素的类型作为返回类型。目前,我在模板中使用

c++ - 如何为 C++ 代码组织 SVN 存储库

我是SVN的新手,我想使用TortoiseSVN向SVN提交代码。我有C++header和代码源,但我不知道如何在将版本上传到SVN之前以有效的方式组织文件夹。关于人们通常如何做的任何建议?不同语言(例如C++或java)的代码结构之间是否存在差异?我应该遵守任何特定规则吗?更新所以在检查了答案之后,我让事情变得更清楚了。一个项目的常用文件夹结构如下:/trunk/branches/tags不过我也发现了一个我很喜欢的类似结构,就是:/trunk#Keepittodevelopementmodealways./samples#samplesofuse/modules#softwarem

c++ - 如何为非默认构造体保留堆栈空间?

我基本上会写下面这段代码。我明白为什么它无法编译。Ainstance;//Aisanon-default-constructabletypeandthereforecan'tbeallocatedlikethisif(something){instance=A("foo");//useaconstructorX}else{instance=A(42);//use*another*constructorY}instance.do_something();有没有办法在不涉及堆分配的情况下实现这种行为? 最佳答案 有比在堆栈上显式保留空间

c++ - 如何为自定义 istream/streambuf 实现 seekg()?

十年前,我曾经是一名C++专家,但在过去的10年里,我一直在编写Java。我刚刚启动了一个使用小型第三方XML解析器的C++项目。XML解析器接受STListream。我的XML数据来自WindowsCOMIStream。我认为我会做正确的事并创建一个适配器来获取IStream数据并通过istream将其呈现给XML解析器。我遵循了http://www.mr-edd.co.uk/blog/beginners_guide_streambuf上的优秀教程并创建了一个从底层COMIStream获取数据的COMStreambuf,并将其用作自定义COMIStream的缓冲区。一切看起来都很好,

c++ - 如何为大量 header 生成 .pch?

我的代码一直使用libcxx、sdl和其他一些库。我如何生成.pch考虑到每个header都可以包含一些其他header(即使有像#ifdef#include#endif这样的复杂条件。这就是为什么很难理解所需的头文件列表的原因。我应该只使用在中找到的所有头文件吗?那个文件夹来创建.pch?在那种情况下使用这样的.pch性能怎么样?更新:如果它很重要,我将把它与Clang(而不是GCC)一起使用,并通过ClangCAPI更具体。更新2:我已经为单个头文件创建了pch:MBA-Anton:pchasmirnov$clang++-xc++-headerheader.h-emit-pch-o

c++ - 如何为非静态容器中的值编写值参数化测试?

我正在尝试编写一个值参数化测试,其中仅在实例化测试类后才创建测试值,即测试值存储在非静态变量中。这意味着我不能做我通常做的事情,容器是静态的:INSTANTIATE_TEST_CASE_P(SomeCriteria,SomeTest,ValuesIn(SomeClass::staticContainerWithTestINputs));这是我遇到困难时的MVCE示例:#include#includeusingnamespacetesting;//Thisisnotatestclass,soIcan'tmodify`myInt`tobestaticjustso//thatIcanwrit

c++ - 你如何为具有继承的 C++ 类编写 C 包装器

我只是想知道是否有办法为具有继承的C++类创建一个C包装器API。考虑以下几点:classsampleClass1:publicsampleClass{public:intget(){returnthis.data*2;};voidset(intdata);}classsampleClass:publicsample{public:intget(){returnthis.data;}voidset(intdata){this.data=data;}}classsample{public:virtualintget();virtualvoidset(intdata);private:in