草庐IT

const-string

全部标签

c++ - 使用 const bool 引用进行后台任务取消跟踪? (C++)

我有一个桌面应用程序,当用户请求时,某些计算在后台线程中运行。有一个取消按钮。我知道向后台任务发出取消信号的“安全”或“正确”方式(使用Qt信号/槽连接、后台任务轮询的互斥体包装bool值等)。然而,在我看来最简单的事情是在我的主线程类中有一个boolcancelled,它在按下Cancel按钮时同步设置,并传递一个constbool&cancelled到它轮询的后台线程。这种方法是否有任何现实的方法会适得其反? 最佳答案 线程可以在不同的处理器上运行,每个处理器都有自己的缓存。如果bool值是原子的,你可以这样做。否则,您可能会面

C++ --- 错误 C2664 : 'int scanf(const char *,...)' : cannot convert argument 1 from 'int' to 'const char *'

我是C++的新手,我正在尝试构建这个非常简单的代码,但我不明白为什么会出现此错误:Error1errorC2664:'intscanf(constchar*,...)':cannotconvertargument1from'int'to'constchar*'代码如下://lab.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#includeintmain(intargc,char*argv[]){introw=0;printf("Pleaseenterthenumberofrows:");sc

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++ - "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++ - 在编译时或运行时将 const char * 映射到 duck-typed T

我有很多类A、B、C、D等,它们都是鸭子类型的,因此具有相同的方法和接口(interface),但不是从同一个类继承的。例如classA{public:voidfoo();voidbar();}classB{public:voidfoo();voidbar();}classC{public:voidfoo();voidbar();}我想在运行时将constchar*映射到这些类之一的相应实例,例如“A”->Aa“B”->Bb这里a是类A的一些实例。或在编译时将'constchar*`映射到相应的类型,例如“A”->A我需要在其他一些函数调用中使用该对象的实例(即调用foo()或bar(

c++ - std::string 分配何时在初始化时发生

当我在类中创建一个std::string成员变量时,是否在实例化时已经分配了默认内存?还是std::string延迟分配直到它被实际使用?我目前正在使用VisualStudio2010,我注意到,当我创建一个空字符串时:std::strings0;std::strings1="";两者都有容量==15套。那么这是否意味着它已经分配了15个字节的内存?如果是,我可以阻止这种情况以便不分配内存吗?这会是跨不同编译器的特定实现吗? 最佳答案 标准未指定空std::string的初始容量,并且取决于实现。许多实现会分配大约16个字符的初始容

c++ - C++ 包装 C 代码的重复 const 错误

我从C++应用程序中包含并使用了一些C代码,这里是重要的部分:C代码ifdef__cplusplusextern"C"{endif...typedefvoid*problem_type;...intproblematic_fn_proto(constproblem_typeconstarg);ifdef__cplusplus}endif不幸的是,由于duplicate'const'错误,这将无法编译。导致问题的是typedef。如果我只是将函数的原型(prototype)更改为:intproblematic_fn_proto(constvoid*constarg);没有更多的问题。不幸

c++ - 同一函数的 const 和非 const 版本 - 反模式?

最近我检查了大量遗留C++代码,发现了一些我以前从未在生产C++代码中见过的东西:classFoo{public:voidBar(){std::cout(this)->Bar();}};这是一个巨大的反模式吗?我的意思是,该函数要么是const要么是非常量,提供两个版本有什么意义?这是某种“const-correctnesscheat”吗,它允许在这样的情况下调用const函数:voidInvokeBar(constFoo&foo){//ohboy!Ireallyneedtoinvokeanon-constfunctiononaconstreference!foo.Bar();}

c++ - 如何根据构造函数参数填充 const 成员数组?

假设我有这个类(class):templateclassA{public:A(constchar*s)...private:constcharbuf[N];};模板在那里,这样我就可以在没有动态内存分配(要求)的情况下配置数组大小。buf成员是const,因为它旨在在对象初始化后在对象的整个生命周期内保持不变。澄清一下,我也无权访问STL。我有什么选择来定义这个构造函数,以便我可以将s的内容复制到buf中?一个选项是const_cast,但我正在寻找不需要这个的替代方案。 最佳答案 @RichardHodges提供的解决方案要求使用

c++ - 为什么我不允许将返回 const char* 的函数的结果分配给 char*,但可以将字符串文字(常量)分配给 char*?

这个问题在这里已经有了答案:WhatisthetypeofstringliteralsinCandC++?(4个答案)关闭6年前。返回constchar*的函数不能分配给char*constchar*func(){return"Thisisaconststringtwo";}但是char*直接在main中赋值了一个常量字符串:intmain(){char*d="thisisaconststringone";//worksfinechar*e=func();//errorcannotconvertfrom'constchar*'to'char*'return1;}为什么矛盾?