草庐IT

c++ - size_t 数据类型可以安全地用于 str.find() 吗?

我一直在查看字符串的find()函数的代码,它们将结果存储在数据类型为size_t的变量中。然而,据我所知,size_t是一个无符号整数,如果find()没有找到预期的字符串,它会返回-1。例如,如果我有strings="asdf";size_ti=s.find("g")cout它给我4294967295。但是,如果我用int数据类型替换size_t,它会给我-1。奇怪的是,当我像这样进行比较时strings="asdf";size_ti=s.find("g")if(i==-1){do_something;}无论i是size_t还是int都有效。那我用哪个?int还是size_t?

c++ - 当字符串保存在一个集合中时,c_str() 是否仍然有效

我有一个旧项目需要维护,其中使用了constchar*。出于某种原因,我想保留大量运行时生成的字符串。所以我创建了一个全局变量std::set来保存这些字符串。当生成新字符串时,除了添加到集合中外,我还会返回并发送newString.c_str(),它将保存在其他地方。例如。std::setg_stringDB;voidArchieveString(AStruct*container,constchar*temporaryString){autoit=g_stringDB.emplace(temporaryString);container->validString=it->first

c++ - C++中c_str()的线程安全

我创建了一个类SettingsClass,它包含静态字符串,这些静态字符串包含MySQLC++连接器库要使用的数据库连接字符串(例如主机名、数据库名、用户名、密码)。每当函数需要连接到数据库时,它都会对这些静态字符串调用.c_str()函数。例如:ClassSettingsClass{public:staticstringhostname;...}SettingsClass;stringSettingsClass::hostname;//AfunctionthatneedstoconnecttotheDBuses:driver=get_griver_instance();driver-

c++ - thread::get_id (C++11) 是免费的吗?

我想测试调用我的一个类的不同函数的线程。我有一个关键时间线程,我不希望任何人调用一个可能调用new的函数,以便从该线程调用。但是,由于这2个函数是公共(public)的,我无法通过语言强制执行。我的想法是测试线程id。假设我可以确保初始化线程ID的调用在正确的线程中,我只需要在其他调用中调用thread::get_id()并与我保存的线程ID进行比较。问题是我也想在关键线程中测试这个ID,但我不能锁定那个线程。因此我的问题是:thread::get_id()是否没有锁定(最糟糕的执行时间是什么时候)? 最佳答案 标准不保证threa

解决:OpenCV: FFMPEG: tag 0x44495658/‘XVID‘ is not supported with codec id 12 and format ‘mp4 / MP4

解决:OpenCV:FFMPEG:tag0x44495658/‘XVID’isnotsupportedwithcodecid12andformat'mp4/MP4文章目录解决:OpenCV:FFMPEG:tag0x44495658/'XVID'isnotsupportedwithcodecid12andformat'mp4/MP4背景报错问题报错翻译代码如下fourcc报错原因解决方法今天的分享就到此结束了背景在使用之前的代码利用python的opencv包把图片合并为视频(mp4格式)的时候,报错:OpenCV:FFMPEG:tag0x44495658/‘XVID’isnotsupporte

c++ - str.clear() 和 str = ""之间的区别

我有一个C++std::stringstr,我已将其设置为某个字符串,现在想重置它以便再次使用它。调用str.clear()与调用str=""有区别吗?编辑。澄清一下:我通过向其附加一个char数组缓冲区来重用str:str.append(buf) 最佳答案 没有有效的区别。根据实现的不同,使用clear()可能比将char指针分配给零更快。但是,即使情况并非如此,也更喜欢更清楚地表达您的意图的方法。如果要清除字符串,请使用clear()。如果要分配空字符串,请使用=""。虽然我会注意到,但你说,“所以我可以再次使用它。”又用它干什

c++ - 如何使用 make_pair 创建一对 id 和 struct(对象)?

我试图像这样创建一对id和对象:#include#include#includestructnum{doublex;doubley;};intmain(){autotmp=std::make_pair(1,{1.0,2.0});}我收到错误error:nomatchingfunctionforcallto'make_pair(int,)'是否有正确的方法来创建一对id和object? 最佳答案 不,这是你应该如何创建你的对:autotmp=std::make_pair(1,num{1.0,2.0});或者(如@StoryTeller

c++ - "expected unqualified-id"上的 "using"编译失败

我需要一些帮助来制作这个类(class)程序。我们正在使用g++(linux?它是通过服务器上的putty)我对这个链表有很多问题。它给我的当前错误是queue.cpp:2:error:expectedunqualified-idbeforeâusingâ想知道是否有人可以帮我解决这个问题。一点点搜索表明问题似乎出在#define的某个地方?错误显示它在.cpp文件中,但我认为它在.h文件中。另外,如果你能给我任何关于任何看起来不对劲、错误的编程建议,或者是否有更好的方法。下面的queue.h文件#ifndefQUEUE_H#defineQUEUE_HtemplateclassQueu

c++ - 我如何在wxWidgets中通过id获取一个widget?

我对C++和wxWidgets很陌生。wxTextCtrl*text=newwxTextCtrl(panel,SOME_ID);我的问题是如何通过ID获取该文本控件。我想在不同的范围内改变它的值(value)。我是否需要保留指向每个可能更改其状态的小部件的指针,或者是否有办法从其ID获取该指针?这可能是一个简单的问题,但我想我找不到正确的搜索词来找到答案。 最佳答案 您可能需要静态函数wxWindow::FindWindowById.它返回一个普通的wxWindow指针,因此您必须将它转换为您的示例的wxTextCtrl指针。

c++ - 为什么 sizeof(this - id) 返回 8?

我的代码中有一个非常愚蠢的拼写错误...is.read((char*)&this->id,sizeof(this-id));在this-之后缺少>字符有趣的是sizeof(this-id)返回了8!我的想法是...因为this是一个指针,对this做减法将导致另一个指针被id的值关闭,它可以是任何东西取决于id的值。还有...在64位系统上,指针通常是8个字节!我说的对吗?还是遗漏了什么?下面是我的类(class)。classIndexItem:publicSerializable{public:IndexItem(uint32_tid,std::streampospos):id(id