Questions tagged «c++»

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

7
是否使用#pragma警告推送/弹出来临时更改警告级别的正确方法?
有时很难编写完全不会发出警告的C ++代码。但是,启用警告是一个好主意。因此,通常有必要禁用某些特定构造周围的警告,并在所有其他代码段中启用警告。 到目前为止,我已经看到了两种方法。 第一个是使用#pragma warning( push )和#pragma warning( pop ): #pragma warning( push ) #pragma warning( disable: ThatWarning ) //code with ThatWarning here #pragma warning( pop ) 第二种是使用#pragma warning( default ): #pragma warning( disable: ThatWarning ) //code with ThatWarning here #pragma warning( default: ThatWarning ) 我在第二个变体中看到的问题是它丢弃了原始警告级别-警告可能在此之前已关闭,或者其警告级别可能已更改。使用default将丢弃这些更改。 第一种方法看起来很干净。有什么问题吗?有没有更好的方法可以达到相同目的?

12
返回对对象的const引用,而不是副本
在重构某些代码时,我遇到了一些返回std :: string的getter方法。例如: class foo { private: std::string name_; public: std::string name() { return name_; } }; 当然,吸气剂返回一个更好const std::string&?当前方法返回的副本效率不高。返回const引用会引起任何问题吗?
73 c++  constants 


3
Valgrind:使用<iostream>的普通程序仍然可以访问内存
采取以下简单程序: #include &lt;iostream&gt; int main() { return 0; } 如果我使用valgrind来运行此程序72,704 bytes in 1 blocks,则会被告知存在still reachable。因此,关于是否要担心仍然可以到达的警告,已经进行了广泛的讨论,我对此并不担心。我只想了解当标准库标头中的任何对象都没有分配给程序本身时,仅包含标准库标头便会导致仍然可以到达的警告。 这是完整的valgrind输出: $ valgrind --leak-check=full --track-origins=yes --show-reachable=yes ./ValgrindTest ==27671== Memcheck, a memory error detector ==27671== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. ==27671== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright …
73 c++  valgrind 

14
C ++跨平台高分辨率计时器
我正在寻找在C ++中实现一种简单的计时器机制。该代码应可在Windows和Linux中使用。分辨率应尽可能精确(至少毫秒精度)。这将用于简单地跟踪时间的流逝,而不用于实现任何类型的事件驱动设计。什么是完成此任务的最佳工具?

8
将std :: __ cxx11 :: string转换为std :: string
我使用c ++ 11,但也使用一些未配置的库,并且需要某种类型转换。特别是,我需要一种转换std::__cxx11::string为常规的方法std::string,但是谷歌搜索找不到这样做的方法,因此放在(string)前面是行不通的。 如果不进行转换,则会出现如下链接错误: undefined reference to `H5::CompType::insertMember(std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, unsigned long, H5::DataType const&amp;) const'
73 c++  string  c++11  types  std 

8
初始化字符串的向量数组
可以初始化字符串的向量数组。 例如: static std::vector&lt;std::string&gt; v; //声明为班级成员 我static只是用来初始化并用字符串填充它。或者,如果不能像常规数组那样初始化它,我应该在构造函数中填充它。
73 c++  stl 

10
如何检测类中是否存在特定的成员变量?
为了创建算法模板函数,我需要知道在作为模板参数的类中是x还是X(以及y或Y)。当将我的函数用于MFC CPoint类或GDI + PointF类或其他一些函数时,此方法可能很有用。他们都在其中使用不同的x。我的解决方案可以简化为以下代码: template&lt;int&gt; struct TT {typedef int type;}; template&lt;class P&gt; bool Check_x(P p, typename TT&lt;sizeof(&amp;P::x)&gt;::type b = 0) { return true; } template&lt;class P&gt; bool Check_x(P p, typename TT&lt;sizeof(&amp;P::X)&gt;::type b = 0) { return false; } struct P1 {int x; }; struct P2 {float X; }; // it …

8
在运行时允许数组大小而不进行动态分配吗?
我已经使用C ++几年了,今天我看到了一些代码,但是这怎么完全合法呢? int main(int argc, char **argv) { size_t size; cin &gt;&gt; size; int array[size]; for(size_t i = 0; i &lt; size; i++) { array[i] = i; cout &lt;&lt; i &lt;&lt; endl; } return 0; } 在GCC下编译。 没有new或malloc如何在运行时确定大小? 只是仔细检查一下,我已经在Google上搜索了一些和所有与我类似的代码,声称它们会导致存储大小错误。 甚至Deitel的C ++如何编程p。常见编程错误4.5下的261个状态: 仅常量可用于声明自动和静态数组的大小。 开导我

2
未在此范围内声明'cout'[关闭]
这个问题不太可能对将来的访客有所帮助;它仅与较小的地理区域,特定的时间段或极为狭窄的情况(通常不适用于Internet的全球受众)有关。要获得使该问题更广泛适用的帮助,请访问帮助中心。 7年前关闭。 我有一个C ++程序: 测试文件 #include&lt;iostream&gt; int main() { char t = 'f'; char *t1; char **t2; cout&lt;&lt;t; //this causes an error, cout was not declared in this scope return 0; } 我得到错误: 未在此范围内声明“ cout” 为什么?
73 c++  iostream  cout 

15
我应该如何订购C ++类的成员?
最好让所有私人成员,然后是所有受保护的成员,然后是所有公共成员?还是相反?还是应该有多个私有的,受保护的和公共的标签,以便可以将操作与构造函数分开,以此类推?做出此决定时应考虑哪些问题?

7
什么时候以及为什么需要在C ++中使用cin.ignore()?
我用C ++写了一个非常基本的程序,要求用户输入一个数字,然后输入一个字符串。令我惊讶的是,在运行该程序时,它从未停止过询问字符串。它只是跳过了它。在对StackOverflow进行一些阅读之后,我发现我需要添加一行内容: cin.ignore(256, '\n'); 在获取字符串输入的行之前。添加该功能可以解决问题并使程序正常运行。我的问题是,为什么C ++需要这一cin.ignore()行?如何预测何时需要使用cin.ignore()? 这是我编写的程序: #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { double num; string mystr; cout &lt;&lt; "Please enter a number: " &lt;&lt; "\n"; cin &gt;&gt; num; cout &lt;&lt; "Your number is: " &lt;&lt; num &lt;&lt; "\n"; cin.ignore(256, '\n'); // Why do I need …
73 c++  cin  getline  ignore 

4
在结构中初始化默认值
如果我只需要初始化C ++结构的几个选择值,这是否正确: struct foo { foo() : a(true), b(true) {} bool a; bool b; bool c; } bar; 我是否正确地假设我最终会得到一个struct名为bar元素的项bar.a = true,bar.b = true而未定义项bar.c呢?
73 c++ 


21
在C ++跨平台中解析URL的简单方法?
我需要解析一个URL,以获取用C ++编写的应用程序中的协议,主机,路径和查询。该应用程序旨在跨平台。我很惊讶我在boost或POCO库中找不到能做到这一点的任何东西。我不看的地方很明显吗?关于适当的开源库有什么建议吗?还是这只是我要做的事情?它不是超级复杂,但似乎有如此常见的任务,令我惊讶的是,没有一个通用的解决方案。
72 c++  url  uri 

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.