草庐IT

function_char-length

全部标签

c++ - 在 C++ 中将 projectDir 作为字符串或 char*

我看到了几个与这个主题相关的问题,但我没有找到简单通用的方法。我的问题是:如何在我的C++代码中将$(projectDir)或另一个宏作为string或char*?谢谢 最佳答案 如果你的编译器支持rawstrings然后您可以将MYMACRO=R"($(ProjectDir))";添加到预处理器定义(来自VisualStudio2013的屏幕截图):然后您可以将以下内容添加到您的代码中:#pragmamessage("MYMACRO=="MYMACRO)//willprintprojectdirduringcompilations

c++ - 使用 std::function 或转发引用作为高阶函数的通用可调用对象输入参数?

我想知道编写一个以std::function作为输入参数的高阶函数的主要区别、优缺点。或转发引用,例如templatevoidhof(F&&fun);.显然,前者比后者更严格,因为它指定了输入可调用对象必须符合的函数类型。 最佳答案 std::function通常具有显着的运行时开销。通过template参数传递通用可调用对象可避免std::function的间接成本,并允许编译器积极优化。我在theendofthisarticle为lambda递归编写了一些简单的基准测试(Y组合器与std::function).std::func

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++ - 为什么我不能使用与 'const int*' 相同的 'const char*' 创建一个 int 数组?

为什么我可以用这种方式创建一个字符串或字符数组:#includeintmain(){constchar*string="Hello,World!";std::cout?并且它正确输出第二个元素,而如果没有数组的下标符号[]我就不能创建整数类型的数组?char的一个和这个有什么区别:constint*intArray={3,54,12,53};。 最佳答案 “为什么”是:“因为字符串文字很特殊”。字符串文字存储在二进制文件中,作为程序本身的常量部分,constchar*string="Hello,World!";只是将文字视为存储在别

c++ - 模板实例化失败 : compiler choosing improper overload function

我对模板并不陌生,但我遇到了一个相当奇怪的问题,我需要将模板类型分离到它的组件中,以用于我正在处理的数据序列化程序。这很难解释,所以我已经证明了。这是我简化的示例问题,example.cpp。templatevoidfoo(T&arg){}templatevoidfoo(T&arg){}intmain(intargc,char*argv[]){foo(argc);return0;}我得到一个错误,然后是一个警告,这似乎表明它正在尝试实例化两个函数,但只有其中一个是合适的。$g++-Wall-Wexample.cppexample.cpp:2:43:error:‘T’isnotatemp

c++ - C++ char如何区分ASCII和UNICODE

我目前正在使用C++编写一个可以处理字母和韩文字符的程序。但是我了解到c++中char的大小只有1个字节。这意味着为了处理外来字符或UNICODE,它需要为一个字符使用两个字符。strings=string("a가b나c다");cout打印9但我的问题是C++执行如何区分这两种不同类型的字符?例如,如果我制作一个大小为9的char数组,它如何知道它是9个ascii字符还是4个unicode+1个ascii?然后我想通了:charc;inta;char*cp="가나다라마바사아";for(inti=0;i只打印a的负值。cval:aval:-80cval:aval:-95cval:ava

c++ - syntax::function_name 在 C++ 中是什么意思?

在名为::foo()的函数中,我不明白语法的用途。如果它是foo::count_all()那么我知道count_all是类或命名空间foo的函数。在::foo()的情况下,::引用的是什么? 最佳答案 ::运算符正在调用namespace或class。在您的情况下,它正在调用全局命名空间,它是不在命名空间中的所有内容。下面的例子说明了为什么namespace很重要。如果您只是调用foo(),您的调用将无法解析,因为有2个foo。您需要使用::foo()解决全局问题。namespaceHidden{intfoo();}intfoo()

c++ - 关于 'char' 的奇怪程序行为

我在学习if-else语句时编写这段代码只是为了好玩。当我数字10e时出现奇怪的行为,程序返回错误,但我不明白为什么!我的意思是,使用其他单位(例如“d”或“y”)时效果很好,但当我输入“e”时,它就疯了!基本上,程序会转换用户输入的数字,以数字后面的单位为单位。例如,如果您输入10d,它将返回多少日元的10英镑。看看://money_exchange.cpp:Amoneyexchangesimulatorthatconvertsanyratetopound.//Thestandardratescanbeupdateddaily.#include"stdafx.h"#include".

c++ - 错误 : no matching member function for call to 'push_back'

为什么我在最后两行收到错误?目标是在集合中找到对象,并修改其内容。usingnamespacestd;structmystruct{intid;vectory;mystruct(constintid):id(id){}booloperatorsx;mystructx(1);x.y.push_back(1);x.y.push_back(2);sx.insert(x);//set::iteratori=sx.find(1);constmystruct*x1=&(*i);constmystructx2=*x1;couty)y)y.push_back(4);}好像迭代器返回的是常量对象,不让我

c++ - 错误 : no matching function for call to . .. 在返回语句

我在openSUSELeap15上的Qt5.9.4上使用GCC7。我有以下类(class):classManSuppProps:publicQObject{Q_OBJECTpublic:explicitManSuppProps(QStringparentName);explicitManSuppProps(){}explicitManSuppProps(constManSuppProps&manSuppProps);explicitManSuppProps(ManSuppProps&manSuppProps);~ManSuppProps();private:QVector3Dm_sup