草庐IT

STDC_FORMAT_MACROS

全部标签

c++ - 将 %s 格式说明符与 boost::format 和 std::string 一起使用

我知道像这样使用%s格式说明符和std::string会导致未定义的行为:std::stringmyString="test";printf("%s",myString);但是使用相同的说明符和std::string与boost::format是否节省?#includeintmain(){std::stringmyString="test";boost::formatfmt("%s");fmt%myString;std::cout%s指定了一个(const)char*,但我提供了一个std::string。这也会导致UB吗? 最佳答案

c++ - 获取以毫秒为单位的当前时间,或 HH :MM:SS:MMM format

我编写了一个C++函数来获取HH:MM:SS格式的当前时间。如何添加毫秒或纳秒,以便我可以使用类似HH:MM:SS:MMM的格式?如果不可能,以毫秒为单位返回当前时间的函数也不错。然后我可以自己计算两个日志点之间的相对时间距离。stringget_time(){time_tt=time(0);//gettimenowstructtm*now=localtime(&t);std::stringstreamsstm;sstmtm_hour)tm_min)tm_sec;strings=sstm.str();returns;} 最佳答案 这

c++ - 自定义类型与 boost::format 的 % 运算符一起使用的要求是什么?

我想知道必须在类中实现哪些函数和/或运算符才能使用boost::format%运算符。例如:classA{intn;//我一直在学习Pretty-printC++STLcontainers,这在某些方面与我的问题有关,但这让我花了几天时间进行相关审查和学习,涉及涉及auto和各种其他语言功能的问题。我还没有完成所有这些调查。有人可以回答这个具体问题吗? 最佳答案 你只需要定义一个合适的输出操作符(operator):#include#includestructA{intn;A():n(){}friendstd::ostream&op

github报错Key is invalid. You must supply a key in OpenSSH public key format

原因:由于github官方提示普通类型的ssh不安全,所以改成OpenSSH解决办法第一步:打开终端。粘贴下面的文本,替换为您的GitHub电子邮件地址。连续按回车键ssh-keygen-ted25519-C"your_email@example.com"第二步:将SSH密钥添加到ssh-agent在后台启动ssh-agent。eval"$(ssh-agent-s)"在你的~/.ssh/目录创建config文件touchconfig在config中添加内容1#---localhostGenerated---#设置你自己的github账户名称HostzhrgithubHostNamegithub

c++ - 我怎样才能告诉 clang-format 遵循这个约定?

我想要这个:if(!enabled){return;}转向这个:if(!enabled){return;}(换句话说,我想在一行中使用简短的if语句,但在它们周围保留{})目前我正在使用以下配置:AllowShortIfStatementsOnASingleLine:trueAllowShortLoopsOnASingleLine:trueAllowShortCaseLabelsOnASingleLine:trueAllowShortFunctionsOnASingleLine:trueAllowShortBlocksOnASingleLine:trueBreakBeforeBrace

c++ - gdb 错误不是可执行格式 : File format not recognized

我正在尝试在Ubuntu16.04上调试一个简单的“helloworld”C++程序,但gdb无法识别可执行文件格式。但是,我能够在命令行上成功运行可执行文件。这是代码#includeusingnamespacestd;intmain(){cout我使用命令编译程序文件TestProject.cppg++-gTestProject.cpp-ohello然后要调试,我给出命令gdb./hello我收到以下错误信息GNUgdb(Ubuntu7.11.1-0ubuntu1~16.5)7.11.1Copyright(C)2016FreeSoftwareFoundation,Inc.Licens

c++ - C/C++ : Inherent ambiguity of "\xNNN" format in literal strings

考虑这两个字符串:wchar_t*x=L"xy\x588xla";wchar_t*y=L"xy\x588bla";阅读本文后,您会认为两个字符串文字除了一个字符外是相同的-'x'而不是'b'。事实证明并非如此。第一个字符串编译为:y={'x','y',0x588,'x','l','a'}第二个实际上是:x={'x','y',0x588b,'l','a'}它们的长度甚至都不一样!是的,'b'被十六进制表示('\xNNN')字符吃掉了。至少,这可能会导致手写字符串的困惑和细微的错误(您可能会争辩说unicode字符串不属于代码主体)但更严重的问题,也是我面临的问题,是自动生成的代码。似乎没

c++ - 带有可变模板参数的 boost::format

假设我有一个类似printf的函数(用于日志记录)利用完美转发:templatevoidawesome_printf(std::stringconst&fmt,Arguments&&...args){boost::formatf(fmt);f%/*Howtospecify`args`here?*/;BlackBoxLogFunction(boost::str(f).c_str());}(我没有编译这个但我的实际功能遵循这个指南)如何将可变参数“展开”到boost::format变量f中? 最佳答案 只是总结void.pointer'

c++ - 使用 clang-format - 将空括号保持在同一行

我正在尝试配置clang-format,这样大括号通常会在它们自己的行上开始:voidfunc(){if(...){printf("TaDa\n");}}但我希望它在大括号为空时保持在一行中。(主要用于ctors):Bar::Bar(intval):_val(val){}目前它看起来像这样:Bar::Bar(intval):_val(val){}有什么想法吗?(经过编辑以使情况更清楚) 最佳答案 更新:万岁!现在可以使用Clang5.0或更高版本的自定义BreakBeforeBraces。请参阅documentation中的Spli

c++ - 有没有办法配置 clang-format 以将嵌套的命名空间声明保持在同一行?

在我工作的代码库中,我们总是这样声明嵌套的命名空间:namespacefoo{namespacedetail{//stuff}}//foo::detailnamespace我还没有找到一种方法来配置clang-formatnot将其分成多行:namespacefoo{namespacedetail{//stuff}}//foo::detailnamespace我试过BreakBeforeBraces配置,我研究了clang3.8中新的BraceWrapping配置,但都没有成功。是否可以在不使用//clang-format[on/off]注释代码的情况下执行此操作?