Questions tagged «c++»

C ++是一种通用编程语言。它最初被设计为C的扩展,并且具有类似的语法,但是现在它是一种完全不同的语言。使用此标记可解决有关将要使用C ++编译器编译的代码的问题。对于与特定标准修订版[C ++ 11],[C ++ 14],[C ++ 17]或[C ++ 20]等相关的问题,请使用特定于版本的标记。

10
QString转换为char *
我试图通过以下方法将QString转换为char *类型,但它们似乎不起作用。 //QLineEdit *line=new QLineEdit();{just to describe what is line here} QString temp=line->text(); char *str=(char *)malloc(10); QByteArray ba=temp.toLatin1(); strcpy(str,ba.data()); 您能否详细说明此方法可能存在的缺陷,或给出替代方法?
94 c++  qt  qstring  qtcore 

7
找不到'uint32_t'标识符错误
我正在将代码从Linux C移植到Windows的Visual C ++。 Visual C ++不知道,#include <stdint.h>所以我将其注释掉。 后来,我发现了很多这样的'uint32_t': identifier not found错误。如何解决?
94 c++  c  visual-c++ 

2
升压魔术数字:: hash_combine
所述boost::hash_combine模板函数采用一个散列(称为参考seed)和对象v。根据文档,它结合seed了vby 的哈希 seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2); 我可以看到这是确定性的。我明白了为什么要使用异或。 我敢打赌,这种加法有助于将相似的值广泛地映射,因此探测哈希表不会崩溃,但是有人可以解释魔术常数是什么吗?

4
向量是通过值传递还是通过C ++中的引用传递给函数
我在用C ++编写代码。如果我有一些函数,void foo(vector<int> test)并且在程序中调用了该函数,则该矢量将通过值或引用传递吗?我不确定,因为我知道向量和数组相似,并且类似的函数void bar(int test[])会通过引用(指针?)而不是值通过测试。我的猜测是,如果我想避免按值传递,但我不确定必须通过指针/引用传递向量。
94 c++  arrays  vector 

6
在编译时计算C字符串的长度。这真的是constexpr吗?
我正在尝试在编译时计算字符串文字的长度。为此,我使用以下代码: #include <cstdio> int constexpr length(const char* str) { return *str ? 1 + length(str + 1) : 0; } int main() { printf("%d %d", length("abcd"), length("abcdefgh")); } 一切正常,程序输出4和8。clang生成的汇编代码表明结果是在编译时计算的: 0x100000f5e: leaq 0x35(%rip), %rdi ; "%d %d" 0x100000f65: movl $0x4, %esi 0x100000f6a: movl $0x8, %edx 0x100000f6f: xorl %eax, %eax 0x100000f71: callq …

2
std :: back_inserter的std :: set吗?
我想这是一个简单的问题。我需要做这样的事情: std::set<int> s1, s2; s1 = getAnExcitingSet(); std::transform(s1.begin(), s1.end(), std::back_inserter(s2), ExcitingUnaryFunctor()); 当然,std::back_inserter因为没有,所以不起作用push_back。 std::inserter还需要一个迭代器?我没有用过,std::inserter所以不确定该怎么做。 有人有主意吗? 当然,我的另一个选择是对使用向量s2,然后稍后对其进行排序。也许更好?
94 c++  algorithm  stl 


7
M_PI在Math Studio中与math.h一起使用,但不适用于cmath
我正在使用Visual Studio2010。我已经读过在C ++中使用<cmath>而不是更好<math.h>。 但是在程序中,我尝试编写以下内容(Win32控制台应用程序,空项目): #define _USE_MATH_DEFINES #include <math.h> 它会编译,而如果我写 #define _USE_MATH_DEFINES #include <cmath> 它失败了 错误C2065:“ M_PI”:未声明的标识符 正常吗 我使用cmath还是math.h是否重要?如果是,我如何使其与cmath一起使用? 更新:如果我在GUI中定义_USE_MATH_DEFINES,它可以工作。任何线索为什么会这样?

4
如何从<chrono>中获取持续时间(以毫秒为单位)和浮点秒?
我正在尝试使用chrono库作为计时器和持续时间。 我希望能够有一个Duration frameStart;(从应用程序开始)和一个Duration frameDelta;(帧之间的时间) 我需要能够获得frameDelta持续时间(以毫秒为单位)和浮点秒。 如何使用新的c ++ 11&lt;chrono&gt;库执行此操作?我一直在努力并进行谷歌搜索(信息稀疏)。该代码是大量模板化的,需要特殊的强制类型转换和其他操作,我无法弄清楚如何正确使用此库。
94 c++  c++11  timer  chrono 


6
C ++终止调用,没有活动异常
我在线程获取C ++错误: terminate called without an active exception Aborted 这是代码: #include &lt;queue&gt; #include &lt;thread&gt; #include &lt;mutex&gt; #include &lt;condition_variable&gt; template&lt;typename TYPE&gt; class blocking_stream { public: blocking_stream(size_t max_buffer_size_) : max_buffer_size(max_buffer_size_) { } //PUSH data into the buffer blocking_stream &amp;operator&lt;&lt;(TYPE &amp;other) { std::unique_lock&lt;std::mutex&gt; mtx_lock(mtx); while(buffer.size()&gt;=max_buffer_size) stop_if_full.wait(mtx_lock); buffer.push(std::move(other)); mtx_lock.unlock(); stop_if_empty.notify_one(); return *this; } //POP …

15
C ++ 11是否具有C#样式的属性?
在C#中,使用getter和setter的字段有一个不错的语法糖。此外,我喜欢自动执行的属性,这些属性使我可以编写 public Foo foo { get; private set; } 在C ++中,我必须编写 private: Foo foo; public: Foo getFoo() { return foo; } C ++ 11中是否有这样的概念,可以让我对此有所了解?
93 c#  c++  class  c++11 



13
取消std :: type_info :: name的结果
我目前正在研究一些日志记录代码,这些代码除其他事项外,应该打印有关调用函数的信息。这应该是相对容易的,标准C ++有一个type_info类。这包含类型标识符的类/函数/等的名称。但它被粉碎了。这不是很有用。即typeid(std::vector&lt;int&gt;).name()返回St6vectorIiSaIiEE。 有没有办法从中产生有用的东西?就像std::vector&lt;int&gt;上面的例子一样。如果它仅适用于非模板类,那也很好。 该解决方案应该适用于gcc,但是如果我可以移植的话会更好。它是用于日志记录的,因此不能关闭它并不是很重要,但是它对调试很有帮助。
93 c++  gcc  name-mangling 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.