草庐IT

c++ - 从 ‘void’ 到非标量类型的转换‘std::pair<std::basic_string<char, std::char_traits<char>

我在电子表格obj中有一堆对:std::stack>undoStack;我正在尝试弹出堆栈并将其分配给另一对:std::pairchange=spreadsheets.at(i).undoStack.pop();我收到这个错误:error:conversionfrom‘void’tonon-scalartype‘std::pair,std::allocator>,std::basic_string,std::allocator>>’requested这里出了什么问题? 最佳答案 stack::pop()返回void但您正试图将其分配

c++ - 如何让 "std::cout << 123456789.12"打印 "123456789.12"?

如何制作std::cout打印这个:123456789.12它总是打印这个:1.23457e+008我知道我必须玩旗帜,但我不太清楚正确的组合。如果我设置固定标志,它会打印123456789.120000 最佳答案 如何......?一种方式:-#include#includeintmain(){doublef=123456789.12;std::cout参见here请寻找合适的引用资料 关于c++-如何让"std::cout https://stackoverflow.c

c++ - 使用 `A<int>::template B<int> x;` 定义变量是否符合 C++ 标准?

这个问题在这里已经有了答案:WhereandwhydoIhavetoputthe"template"and"typename"keywords?(8个答案)关闭8年前。gcc、vc++和clang接受以下代码。templatestructA{templatestructB{};};intmain(){A::By;//OKasexpectedA::templateBx;//AlsoOK!Isthisstandard-compliant?};使用A::templateBx;定义变量是否符合C++标准??

c++ - 为什么我应该在使用命名空间 std 之后包含头文件 <iostream>?

既然命名空间std已经有了包含函数定义的C++库(如果我是对的),那我们为什么还要在它上面包含头文件??。由于命名空间std包含C++标准库,我看不出有理由单独包含它的声明。 最佳答案 当你做#include它会导致一组类和其他内容包含在您的源文件中。对于iostream和大多数标准库头文件,它们将这些东西放在名为std的命名空间中。.所以#include的代码看起来像这样:namespacestd{classcin{...};classcout{...};classcerr{...};classclog{...};...}所以此时

c++ - Ratio<,> 是常量,但如果我想接受不同的比率作为参数怎么办?

也许是一个矛盾的问题:ratio根据定义,是一个编译时常量。但是,我想构建具有不同比率的持续时间,这些比率可以由我的方法的调用者指定。我想我应该使用比率和/或持续时间以外的东西,但是什么?比方说,我想要一个可以在运行时设置的类成员,并且我希望它的类型为ratio。在代码中的某个位置,这个成员被设置/分配,它会被分配一个恒定的比率,但在我的类(class)中,我不想指定该比率应该是多少。 最佳答案 好的,你需要一个std::ratio“可以由调用者指定”。共有三个不同的选项:调用者想要设置std::ratio编译时期间的模板参数。这很

c++ - 一般从 boost::variant<T> 转换为类型

我有一个typedefboost::variantvariant我用它来在结构中存储不同类型的值。只有一个特定类型会存储在该结构中,但是我有这些结构的vector,我需要通过它并从变体中获取实际类型。现在,当我需要将类型从这个变体中转换出来时,我会这样做:variantsecond=mystruct.variant;if(second.which()==5)//string{std::stringval=boost::get(second);modvalue->AddNodeAttribute(key,val);}elseif(second.which()==0)//int{intva

c++ - std::vector<std::string> 崩溃

这个问题是myquestion的延续.这是有问题的代码。嗯:#include#includestd::vectorfoo();a.cpp#include"a.h"std::vectorfoo(){std::vectorv;returnv;}最后是main.cpp:#include"a.h"#includeintmain(){std::vectors=foo();return0;}编译如下(main.cpp是带STL调试标志编译的):g++-ca.cppg++-D_GLIBCXX_DEBUGmain.cppa.o运行a.out时,进程崩溃:Corewasgeneratedby`./a.o

c++ - 未定义 vector<bool> 元素的运算符 &=?

这个问题在这里已经有了答案:Whyvector::referencedoesn'treturnreferencetobool?(6个答案)关闭9年前。我用operator&=做了一些测试.如以下示例所示,这适用于单个bool类型以及vector输入,但不是vector.#includeintmain(){boola,b;a&=b;//okstd::vectorc(1);c[0]&=b;//errorc[0]=c[0]&b;//okstd::vectord(1);d[0]&=b;//okreturn0;}谁能告诉我这是怎么回事?(我使用的是gcc4.4.3)

c++ - std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n' ) 使用#include <Windows.h> 时出错

这个问题在这里已经有了答案:std::max-expectedanidentifier(6个答案)macro"max"requires2arguments,butonly1given(4个答案)关闭去年。在VisualStudio2010Pro中,我在max()上收到一个编译错误,指出“需要一个标识符”命令的一部分。似乎在windows.h头文件中有一个max(a,b)标识符和编译器想要使用它。我尝试使用#include也一样,但这并没有解决问题。有什么办法可以解决这个问题吗?

c++ - 使用 <iostream> 打印指针

这个问题在这里已经有了答案:cout(6个答案)关闭5年前。为什么#includeusingnamespacestd;intmain(){cout段错误,但是#includeusingnamespacestd;intmain(){cout似乎工作得很好?