草庐IT

BUFFER_LENGTH

全部标签

c++ - 在循环中使用 string.length() 是否有效?

例如,假设一个strings是这样的:for(intx=0;x比这更好?intlength=s.length();for(intx=0;x谢谢,乔尔 最佳答案 一般来说,如果结果在迭代过程中没有改变,则应避免在循环的条件部分调用函数。因此,规范形式是:for(std::size_tx=0,length=s.length();x!=length;++x);这里注意三件事:初始化可以初始化多个变量条件用!=表示而不是我使用前增量而不是后增量(我还更改了类型,因为负长度是无意义的,字符串接口(interface)是根据std::strin

c++ - 了解 MSVC++ 中的 "Buffer Security Check/GS"编译器选项

我最近惊讶地注意到,在MSVC++2010中使用/GS(启用缓冲区安全检查)进行编译似乎在某些情况下对运行时性能具有不可忽略的影响。有没有人有过这样的经历??对于大型科学风格的应用程序(网格生成库),似乎使用/GS-进行编译可以使我的几个大型基准测试的运行时间提高近10%测试套件(“大”是>=1秒的运行时间)。/GS在MSVC++2010中的所有优化级别默认处于启用状态。我必须承认,我以前从未过多关注过这个选项,我想澄清一下它的实际作用。在线documentation似乎广泛谈论字符串缓冲区,但由于我不在任何地方使用string或char[]缓冲区,我一定遗漏了一些东西。这段(来自在线

c++ - 理解错误 "terminate called after throwing an instance of ' std::length_error' what(): basic_string::_S_create Aborted (core dumped)"

所以这是我的错误:terminatecalledafterthrowinganinstanceof'std::length_error'what():basic_string::_S_createAborted(coredumped)这是我的代码://CoderemovedstringgenerateSong(stringlist[],intnum){//Coderemoved//Coderemovedfor(i=0;i我只想知道该错误的含义,以便我知道如何修复它。我看到很多帖子都有类似的错误,但没有完全相同的。从字面上看,我才刚刚开始使用C++,而这些答案对我目前所学的知识都没有任何

c++ - 谷歌 Protocol Buffer 消息到字节数组 C++

我目前使用两种消息协议(protocol),一种是googleproto,另一种是c-structs。将谷歌ProtocolBuffer消息(MessageLite)转换为字节数组的最佳解决方案是什么?例如,我想转换以下googleproto消息:messageGoogleRequest{optionalint32request=1[default=0];}到:structRequest{intrequest;};我已经尝试了以下但它不起作用:GoogleRequestreqMsg;reqMsg.set_request(1234);intsize=reqMsg.ByteSize();R

windows - Windows 上的 gVIM : execute buffer and paths with spaces

在gVimforwindows中,可以通过:!%命令执行当前缓冲区。但是,不幸的是,缓冲区文件名提供给cmd.exe时没有引号,所以如果文件路径有空格,gVim将无法执行它。是否有任何简单的方法来修复它以便能够从gVim中执行.bat、.py等? 最佳答案 这是我的猜测,我没有windows机器可以尝试。尝试:!python"%"或:!"%"信用:hell之眼 关于windows-Windows上的gVIM:executebufferandpathswithspaces,我们在Stack

windows - STATUS_STACK_BUFFER_OVERRUN 和 STATUS_STACK_OVERFLOW 有什么区别?

我刚刚发现有一个STATUS_STACK_BUFFER_OVERRUN和一个STATUS_STACK_OVERFLOW。这两个有什么区别?我刚找到Stackoverflow(stackexhaustion)notthesameasstackbufferoverflow但要么它没有解释它,要么我不明白。你能帮帮我吗?问候托拜厄斯 最佳答案 考虑以下在内存中向下增长的堆栈:+----------------+|somedata||+----------------+|growthofstack|20-bytestring|V+-----

c - Unix 到 Windows : Alternative to vsnprintf to determine length?

我目前正在将我们的一个Linux库的代码转换为WindowsDLL。在这个库中,我有一个函数以printf方式获取最后一个参数(格式字符串,然后省略号)。在此函数中,我使用vsnprintf来格式化提供的参数。因为我想知道我是否可以将最终字符串塞进一个小缓冲区,或者我是否必须分配内存,我有兴趣确定格式化字符串的“将是长度”。为此,我目前正在像这样使用vsnprintf(显然是示例代码):#include#include#includevoidfoo(constchar*fmt,...){intlen=0;va_listap;va_start(ap,fmt);len=vsnprintf(

windows - VIM : How to map command according to buffer type?

我知道我的标题没有那么描述性/清晰,所以让我解释一下。昨天我能跨Vimgrepandcopen所以我在.vimrc中添加了以下行nnoremap,/:execute'vimgrep/'.@/.'/g%':copen它所做的是打开一个quickfixlist对于searched(highlighted)vim中的单词。现在当你按下Enter在quickfix列表中,它会将您带到主Vim窗口中的相应行。现在,我面临的问题是我已经映射了我的喜欢mapo这会在当前行下方创建一个新行。因此,如您所见,两者之间存在冲突。所以,我正在尝试的是想出一个像这样的vim函数伪代码functionIfNot

windows - sox 失败实用程序 : Unable to load MAD decoder library (libmad) function "mad_stream_buffer"

我为sox编译了libmad。当我尝试阅读mp3时,我收到此消息:soxFAILutil:无法加载MAD解码器库(libmad)函数“mad_stream_buffer”。我是不是编译错了项目? 最佳答案 使用SOX创建MP3的步骤:下载最新版本SOX并安装。下载libmad-0.dll和libmp3lame-0.dll。目前唯一已知的可信赖来源是ossbuild但这需要您下载1.5GB的存档。所选的两个文件可用here和here.将libmad-0.dll和libmp3lame-0.dll添加到安装SOX的文件夹中。使用命令行将文

node.js - 无法读取 node_redis hgetall 函数中未定义的属性 'length'

我有以下生成错误的代码:leagueclient.hgetalluserLeagueKey,getLeagueInfo我已经验证了key是正确的,并且getLeagueInfo正确执行并返回了正确的值,但在这两者之间我得到了Cannotreadproperty'length'ofundefined。调试说它在hgetall中。我在node_redis中打开了调试消息send127.0.0.1:6379id2:*2$7hgetall$14userLeagueId:0send_commandbuffered_writes:0should_buffer:falsetrueCannotread