草庐IT

string.format

全部标签

c++ - 指针和 std::string - 奇怪的行为 - C++

我提前道歉,因为我在之前的帖子中问过同样的问题,但正如有人正确指出的那样,我没有发布真正的代码。因此,我再次问同样的问题,试图比以前更清楚。作为练习,我正在创建一个操作字符串的程序。特别是,我想删除包含在2个“*”之间的部分字符串。我必须强调,我已经使用库字符串的函数成功地创建了相同的程序;事实上,问题涉及使用char指针对给定字符串的操作。我将发布完整的代码并进行深入讨论。#include#includeusingnamespacestd;intmain(){stringfrase;getline(cin,frase);//Takesasinputthephraseintsize=f

c++ - 函数调用参数,char * vs string 默认构造函数

在C++11及更高版本中调用函数/方法时,哪个更好(如果有区别)?让我们假设这个函数/方法:voidfunc(std::strings){...}以下哪一个最好?func(std::string())或func("")更一般地说,在初始化或参数传递期间始终显式调用构造函数是否有任何优势? 最佳答案 最好调用默认构造函数,因为它保证不会做任何不必要的工作。当传递一个空字符串文字时,可能是字符串实现做了一些处理该字符串的工作(例如计算它的长度)。空字符串文字不是可以与非空字符串文字区别对待的Elixir。它的类型是constchar[1

c++ - boost::interprocess::basic_string 作为 std::string

我正在尝试用constboost::interprocess::basic_string&替换返回conststd::string&的类方法。我面临的主要挑战是这两个类之间的不兼容性,尽管它们的实现相似。为了更清楚的解释,我将把它放入代码中classA{std::stringm_str;conststd::string&StrVal(){returnm_str;}}现在这个类看起来像这样:typedefboost::interprocess::allocatorShmemAllocatorChar;typedefboost::interprocess::basic_string,Shm

带有日期的 c++ to_string 错误

我正在尝试编写一个将日期作为字符串返回的函数。我这样做是这样的:stringdate()//includesnotlistedforsakeofspace,usingnamespacestd{tmtimeStruct;intcurrentMonth=timeStruct.tm_mon+1;intcurrentDay=timeStruct.tm_mday;intcurrentYear=timeStruct.tm_year-100;stringcurrentDate=to_string(currentMonth)+"/"+to_string(currentDay)+"/"+to_strin

c++ - Xcode 项目将不再在调试器中显示 std::string

我有一个Xcode项目在调试时不会显示C++std::strings。这非常令人沮丧,因为我不得不求助于打印语句或在LLDB控制台窗口中一次输出一个字符,这既耗时又难以阅读。使用同一个项目的每个其他人都遇到同样的问题,而其他项目没有看到这个问题,所以我认为这是某种项目设置。我正在调试并且没有打开优化,所以我已经将其作为问题消除了。我还比较了工作项目和有此问题的项目之间的项目设置,它们在各个方面看起来都一样。这是我得到的输出示例,此示例中的*_M_p是正确的,字符串的第一个字符是问号:这是我一次检查字符串一个字符时在调试控制台中得到的结果:我听说从LLVM切换回GDB可能会解决问题,但G

java - C++ 将 HashMap<string, boolean> 对象返回给 Java

我有一个JAVA调用的JNI函数,它需要构建并返回一个HashMap。map的键是“字符串”,相应的值是“boolean值”或“boolean值”(只要有效,任何一个都可以)。使用我当前的代码(如下),字符串已成功添加到返回的映射中,并且可以在Java中访问。然而,当试图访问JAVA中的值时,它出现为空。jclassmapclass=env->FindClass("java/util/HashMap");jmethodIDinitmeth=env->GetMethodID(mapclass,"","()V");jmethodIDputmeth=env->GetMethodID(mapc

c++ - std::cin >> std::string 是如何实现的?

特别是,代码如何检查字符的内存是否应该重新分配?或者用户输入了多少个字符?如果我想将C字符串的值分配给我的字符串类的实现,我可能会做这样的事情String&operator=(String&to,constchar*from){if((strlen(from)+1)>to.size){if(to.str!=NULL){delete[]to.str;to.str=NULL;}to.size=strlen(from)+1;to.str=newchar[to.size];}strcpy(to.str,from);returnto;}很简单。但是std::string的operator>>真的

c++ - 警告 : array 'alphabet' initialized by parenthesized string literal

在模板函数中,我目前有以下行:staticconstunsignedcharalphabet[17]=(Uppercase)?("0123456789ABCDEF"):("0123456789abcdef");其中Uppercase是模板参数。使用-pedanticgcc告诉我:warning:array'alphabet'initializedbyparenthesizedstringliteral'("0123456789abcdef")'如何摆脱该消息(我希望alphabet位于堆栈中)? 最佳答案 使代码明确有效的最简单方法

c++ - VS 2010 无法打开源文件 "string"

突然之间,我的VS2010项目中的智能感知开始变得疯狂。一切都正确构建,但它不再能找到基本的C++头文件,如字符串、映射等。它不再识别std::命名空间,而且它通常只是乱七八糟。代码仍然可以编译,但无论我做什么,我都无法让Intellisense再次正常工作。我发现的最接近的现有问题在这里:VS2010error-cannotopenfile"iostream"但该解决方案对我不起作用。我同时安装了2012和2010,所以我想知道是不是其中一个搞砸了另一个。不过,我为此使用的是2010。 最佳答案 好的,我想通了。与此相关:VS20

c++ - std::string::reserve() 和 std::string::clear() 难题

这道题从一段代码开始,只是因为我觉得这样更容易看出我在追求什么:/*static*/voidUrl::Split(std::list&url,conststd::string&stringUrl){std::stringcollector;collector.reserve(stringUrl.length());for(autoc:stringUrl){if(PathSeparator==c){url.push_back(collector);collector.clear();//Sabotagesmyoptimizationwithreserve()above!}else{col