请原谅这个简单的问题,但我已经研究了好几个小时,但没有成功。我正在尝试实现一个功能:std::stringmake_date_string()我正在使用HowardHinnant的日期库,它允许我做这样的事情:cout(system_clock::now());打印类似的东西:2017-07-09我试图弄清楚如何让输出进入std::string以便我可以从我的函数返回它,但我一无所获。 最佳答案 I'mtryingtofigureouthowIcangetthatoutputtogoinastd::stringsoIcanretur
我想要一个函数,它将接受一个time_t参数和一个任意格式的字符串并对其进行格式化。我想要这样的东西:std::stringGetTimeAsString(std::stringformatString,time_ttheTime){structtm*timeinfo;timeinfo=localtime(&theTime);charbuffer[100];strftime(buffer,100,formatString.c_str(),timeinfo);std::stringresult(buffer);returnresult;}但是我遇到的一个问题是缓冲区长度。我正在考虑做类似
考虑以下几点:structA{inti;doubled;std::strings;};std::listlist_A;我想将list_A的所有元素复制到map中,这样map中的每一对都将包含list_A中的一个元素作为值,其字符串s作为键。有没有比遍历列表并将每个元素及其字符串作为键插入映射更优雅的方法? 最佳答案 我喜欢标准库算法和lambda,但它并没有比以下更简单:for(constA&value:list_A){map_A.insert(std::make_pair(value.s,value));}其他方法正在执行与此代码
今天我试图研究一段代码,但我被这一行卡住了。std::vectorListOfFnPointers;这个std::string构造函数是什么意思?我经历了this但我不知道这是什么意思。它在代码中用作,if(!ListOfFnPointers.empty()){std::vectorStringList;for(autoFn:ListOfFnPointers){StringList.push_back((pSomeClassObj->*Fn)());}...}声明是什么意思?这个函数究竟用pSomeClassObj->*Fn做了什么? 最佳答案
有谁知道为什么注释行编译失败但未注释行没问题?#includeintmain(){//std::stringfoo("hello").erase(2);//Thisdoesn'tcompile...std::string("hello").erase(2);//...butthisdoes.}包含注释行会导致此错误:main.cpp:Infunction‘intmain()’:main.cpp:5:error:expected‘,’or‘;’before‘.’token谁能解释一下在构造匿名std::string对象时修改匿名对象和命名对象的规则是什么? 最
据我所知,引用不能为空,但是当我运行这样的代码时:#include#includevoidtest(inti,conststd::string&s=nullptr){std::cout可选参数s可以为null,构建代码。更重要的是,当test(2)运行时,程序会抛出异常,而不是打印一些随机字符串。当我将s更改为一些基本类型(如int)时,它无法编译,所以我认为魔法留在字符串类中,但如何呢?而且,我如何检查s是否为空?如果我使用if(s==nullptr)或if(s.empty()),它无法编译。 最佳答案 test使用构造函数初始化
我脑袋放个屁:我想删除std::string中换行符'\n'的所有实例。我宁愿使用STL而不是手动的、多嵌套的for循环;唯一的问题是我忘记了如何...将for(...){std::string::remove_if(...);};工作?我是否需要使用std::for_each(...,...,std::string::remove_if(...));?还是需要其他东西? 最佳答案 第一个想法:删除/删除成语:str.erase(std::remove(str.begin(),str.end(),'\n'),str.end());
这个问题是这个Howtoefficientlycopyastd::stringintoavector的反面我通常以这种方式复制vector(空终止字符串)std::strings((char*)&v[0]);或者(如果字符串已经被声明)像这样s=(char*)&v[0];它完成了工作,但也许还有更好的方法。编辑C风格的转换很丑陋,有人告诉我这又如何s=reinterpret_cast(&vo[0]); 最佳答案 只需使用迭代器构造函数:std::strings(v.begin(),v.end());(编辑):或者使用char-poi
当GDB将字符串作为参数传递给构造函数时,我遇到了一个奇怪的行为。代码工作正常,但是当我在调试器中单步执行时,GDB似乎认为我的参数位于不同的地址。有谁知道这里发生了什么?这是我可以创建的最简单的程序来演示该问题:--(jwcacces@neptune)--------------------------------------------(/home/jwcacces)----$nlgdb_weird.cpp1#include2#include34classC5{6public:7C(std::stringstr)8{9std::string*str_ptr=&str;10std::
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:C++string::findcomplexity最近我注意到函数std::string::find比函数std::strstr慢一个数量级-在我的GCC4.7环境中在Linux上。性能差异取决于字符串的长度和硬件架构。差异的原因似乎很简单:std::string::find基本上在循环中调用std::memcmp-具有时间复杂度O(m*n)。相比之下,std::strstr针对硬件架构进行了高度优化(例如使用SSE指令)并使用更复杂的字符串匹配算法(显然是Knuth-Morris-Pratt)。我也很惊讶没