草庐IT

c++ - 错误 : no matching function for call to ‘to_string(std::basic_string<char>&)’

即使在模板中我可以有任何类型,函数to_string对基本字符串不起作用:例如:std::stringstr("mystring");my_class(str);用这个仿函数定义:templatevoidoperator()(valuetypevalue){...private_string_field=std::to_string(value);不起作用。这是错误:error:nomatchingfunctionforcallto‘to_string(std::basic_string&)’避免它的最佳方法是什么。事先,我要求避免仅仅因为一些常见的关键字就链接到不相关的问题。

c++ - std::vector<int, std::allocator<char>> 有效吗?

标准没有说明std::vector的分配器但只需要分配器满足Allocator概念。没有关于分配器的value_type,没有reference_type,什么都没有。我以为std::vector内部重新绑定(bind)A到T的分配器,所以我给了一个vectorstd::allocator它按预期工作。但是,如果std::allocator,GCC会生成错误给出,如下:/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.2/include/g++-v4/ext/alloc_traits.h:Ininstantiationof‘struct__gnu_cxx::__

c++ - "no matching function for call to ‘async(std::launch, <unresolved overloaded function type>, std::string&)’“

我正在尝试使用std::async创建线程,但我不断收到错误“没有匹配函数调用‘async(std::launch,,std::string&)’”在行上ConnectFuture=std::async(std::launch::async,Connect_T,ip);这是产生这种行为的代码:#includeclasslibWrapper{public:voidConnect(std::stringip);voidConnect_T(std::stringip);private:std::futureConnectFuture;};voidlibWrapper::Connect(std

c++ - `size_t` 总是 `vector<int>::size_type` 或任何其他容器类型的别名吗?

让我们举一个最简单的例子:公式1:std::vectorvec;//add10E11elementsfor(std::size_tn=0;n公式2:std::vectorvec;//add10E11elementsfor(std::vector::size_typen=0;n当然,unsignedint或任何不合适的数据类型在这里都不起作用,我们必须编译x64。我的问题是:在任何情况下,第一个公式是否会导致问题,或者我们是否可以安全地始终以这种更短的表示法来编写它?如果它们很容易覆盖(x86、任何其他容器、size_type的其他应用程序),我也会对类似的设置感兴趣。

c++ - char_traits<char16_t>::int_type 的大小不够大吗?

考虑以下程序:#include#include#includeintmain(int,char**){std::basic_stringstreamstream;stream.put(u'\u0100');std::cout输出是:Bad:0Bad:0Bad:1设置badbit的原因似乎是因为如果字符等于std::char_traits::eof(),'put'设置badbit。我现在不能再投入流中了。在http://en.cppreference.com/w/cpp/string/char_traits它指出:int_type:anintegertypethatcanholdallv

c++ - 编译 nana 库时不能包含 <X11/Xft/Xft.h>,没有那个文件或目录

我正在尝试安装nanaC++library在Ubuntu16.04中。我下载并解压到我的helloworld文件所在的目录,然后进入makefile所在的目录;nana/build/makefile,输入make却报错X11/Xft/Xft.h:nosuchfileordirectory我检查了/usr/include/X11是的,它不在那里。谷歌搜索并没有帮助找出安装Xft的热点。我该怎么做?还是我做错了什么? 最佳答案 这个header似乎在libxft-dev包中。用你的包管理器安装它。如果合适,请尝试:sudoaptinst

c++ - 为什么没有类似于 std::string_view 的 view<T>

我知道std::string_view是对字符串的非拥有引用和std::string_view之间的主要区别和std::string是现在,为什么std::string_view不适用于其他类型?或者为什么这个实现只针对std::string?例如:如果我们有类似的generic_view其中T可以是任何类型,包括自定义类型。有了这个,而不是使用constT&作为函数参数,generic_view可以使用。以及std::string_view的其他优势将很有用,如分配、复制等。 最佳答案 C++20中有一个非拥有类型,用于任意对象的

c++ - 在 C++ 的编译时检查类型是否为 std::basic_string<T>

我在我的C++代码中定义了is_string:#includetemplatestructis_string{staticconstboolvalue=false;};templatestructis_string>{staticconstboolvalue=true;};intmain(){std::cout::value::value对于std::string和std::wstring都是如此。但我需要这样的谓词:is_string::value//tobetrueis_string::value//tobefalseis_string::value//tobefalseis_st

c++ - 如何在自定义对象的 << 运算符中添加自定义前缀

有没有办法在operator中添加自定义前缀对于我实现的对象?例如:classA{public:std::stringid;intcount;};std::ostream&operator如果我这样做:Aa;a.id="foo";a.count=1;std::cout输出将是:Id:fooCount:1我想做这样的事情:std::cout")要得到这样的输出:-Id:foo-Count:1==>Id:foo==>Count:1建议使用std::setfill和os.fill,但是std::setfill需要一个char作为参数,我需要一个自定义字符串。解决方案查看operator文档,

c++ - std::less<int> 的正确参数类型是什么?

我正在制作一个类——一个BST——它可以比较模板化节点,这需要一个比较器,例如std::less。树是这样的:templateclasstree{private:comparatorcompare;public:explicittree(comparatorfunctor);};但我似乎找不到应该在我的应用程序中输入哪种模板类型。treemy_bst(std::less);error:wrongnumberoftemplatearguments(1,shouldbe2)bst::treemy_bst(std::less);这是有道理的,因为我的模板类型不完整。我应该如何分析我的构造函数