Questions tagged «c++»

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


9
如何在Visual Studio调试器中显示动态分配的数组?
如果您有一个静态分配的数组,Visual Studio调试器可以轻松显示所有数组元素。但是,如果您有一个动态分配并由指针指向的数组,则单击+将其展开时,它将仅显示该数组的第一个元素。有没有一种简单的方法可以告诉调试器,以Foo类型和X大小的数组的形式显示此数据?

3
站点coderbyte上的'gets(stdin)'是怎么回事?
Coderbyte是一个在线编码挑战网站(我在2分钟前找到了它)。 您遇到的第一个C ++挑战有一个您需要修改的C ++框架: #include <iostream> #include <string> using namespace std; int FirstFactorial(int num) { // Code goes here return num; } int main() { // Keep this function call here cout << FirstFactorial(gets(stdin)); return 0; } 如果你稍微熟悉C ++的第一件事*在你的眼睛持久性有机污染物是: int FirstFactorial(int num); cout << FirstFactorial(gets(stdin)); 因此,好的,代码调用gets从C ++ 11开始不推荐使用,而从C ++ 14开始删除,这本身就是不好的。 …


4
如何在类中创建模板函数?(C ++)
我知道可以做一个模板函数: template<typename T> void DoSomeThing(T x){} 并且可以创建一个模板类: template<typename T> class Object { public: int x; }; 但是有可能使一个类不在模板中,然后使该类中的函数成为模板吗?即: //I have no idea if this is right, this is just how I think it would look class Object { public: template<class T> void DoX(){} }; 或某种程度上,类不是模板的一部分,但功能是?
144 c++  templates  function  class 

6
C ++枚举类可以有方法吗?
我有一个带有两个值的枚举类,并且我想创建一个接收一个值并返回另一个值的方法。我还想保持类型安全(这就是为什么我使用enum类而不是enums的原因)。 http://www.cplusplus.com/doc/tutorial/other_data_types/没有提及任何方法,但是,我的印象是任何类型的类都可以具有方法。
144 c++  methods  enums 

7
什么时候应该使用C ++ 14自动返回类型推导?
随着GCC 4.8.0的发布,我们有了一个支持自动返回类型推导的编译器,它是C ++ 14的一部分。使用-std=c++1y,我可以这样做: auto foo() { //deduced to be int return 5; } 我的问题是:什么时候应该使用此功能?什么时候需要,什么时候可以使代码更简洁? 场景1 我能想到的第一种情况是尽可能的。可以用这种方式编写的每个函数都应该如此。这样做的问题是,它可能并不总是使代码更具可读性。 方案2 下一种情况是避免使用更复杂的返回类型。作为一个非常简单的示例: template<typename T, typename U> auto add(T t, U u) { //almost deduced as decltype(t + u): decltype(auto) would return t + u; } 尽管在某些情况下让返回类型显式依赖于参数,但我认为这绝对不会成为问题。 场景3 接下来,为了防止冗余: auto foo() { std::vector<std::map<std::pair<int, double>, …

7
std :: cin输入带有空格?
#include <string> std::string input; std::cin >> input; 用户想要输入“ Hello World”。但是cin在两个词之间的空格处失败。我如何才能cin吸收全部Hello World? 我实际上是用结构体cin.getline来做的,似乎没有用。这是我的代码: struct cd { std::string CDTitle[50]; std::string Artist[50]; int number_of_songs[50]; }; std::cin.getline(library.number_of_songs[libNumber], 250); 这产生一个错误。有任何想法吗?
144 c++  string  space 

7
C ++自动关键字。为什么魔术呢?
从我用来学习C ++的所有材料中,auto一直以来都是一个奇怪的存储期限说明符,没有任何用处。但是就在最近,我遇到了将其本身用作类型名称的代码。出于好奇,我尝试了一下,它假定了我碰巧分配给它的任何类型! 突然地,STL迭代器以及所有使用模板的东西都易于编写10倍。感觉就像我在使用像Python这样的“有趣”语言。 这个关键词在我的一生中都在哪里?您会说这是Visual Studio专用的还是便携式的,从而破坏了我的梦想?
144 c++  types  c++11  auto 


14
在C ++中用auto声明变量是否有缺点?
似乎auto在C ++ 11中添加了相当重要的功能,该功能似乎遵循了许多较新的语言。与Python之类的语言一样,我没有看到任何显式的变量声明(我不确定是否可以使用Python标准)。 使用auto声明变量而不是显式声明变量是否有缺点?


5
Antlr的优点(相对于lex / yacc / bison)[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 改善这个问题 过去,我曾在各种项目中使用过lex和yacc(通常是野牛),通常是翻译器(例如流到EDA应用程序中的EDIF的子集)。此外,我还必须支持基于几十年前的lex / yacc语法的代码。因此,尽管我不是专家,但我知道如何使用这些工具。 过去,我已经在各个论坛上看到过有关Antlr的正面评论,并且我对自己可能会缺少的东西感到好奇。因此,如果您同时使用了两者,请告诉我Antlr有哪些更好或更高级的功能。我目前的限制是我在C ++商店工作,我们提供的任何产品都不包括Java,因此生成的解析器必须遵循该规则。
143 c++  antlr  yacc  bison 

7
为什么我不能发出字符串?
为什么我不能cout string这样: string text ; text = WordList[i].substr(0,20) ; cout << "String is : " << text << endl ; 当我这样做时,出现以下错误: 错误2错误C2679:二进制'<<':未找到采用'std :: string'类型的右侧操作数的运算符(或没有可接受的转换)c:\ users \ mollasadra \ documents \ visual studio 2008 \ projects \ barnamec \ barnamec \ barnamec.cpp 67 barnamec ** 令人惊讶的是,即使这样也不起作用: string text ; text = …
143 c++  string  cout 


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.