草庐IT

message_string

全部标签

c++ - C++17 std::basic_string_view 是否会使 C 字符串的使用无效?

C++17正在引入std::basic_string_view,它是非拥有字符串版本,其类仅存储指向字符串第一个元素的指针和字符串的大小。还有理由继续使用C字符串吗? 最佳答案 IstherestillareasontokeepusingCstrings?我认为可以公平地说,除了使用CAPI之外,从来没有有理由使用C字符串。在设计只需要字符的只读表示的函数或方法的接口(interface)时,您会更喜欢std::string_view。例如。搜索字符串、生成大写拷贝、打印它等等。在设计一个接受字符串拷贝的接口(interface)时

c++ - 这是对临时 std::string 的正确使用吗?

std::stringgetMyString(){return;}...HANDLEsomething=OpenSomething(getMyString().c_str(),...);我读过GuaranteedlifetimeoftemporaryinC++并且我相信临时字符串将一直存在到分配被评估之前,即足够长的时间来使这项工作按预期进行。之前遇到过一次与std::string生命周期相关的错误(不记得是什么)我宁愿仔细检查...... 最佳答案 临时函数的析构函数直到函数调用返回后才会被调用,所以我们在这里看到的是安全的。但是

c++ - std::string 内存管理

我在使用std::string进行内存管理时遇到问题。我有应用程序-带有分离线程的多线程服务器(我确实需要加入它们,它们会完成工作并退出),我发现一段时间后内存使用率很高。我已经开始试验问题出在哪里,我已经创建了演示问题的测试程序#include#include#includepthread_tthread[100];usingnamespacestd;classtst{public:tst(){//coutcalc();deleteTEST;pthread_exit((void*)0);}intmain(intargc,char*constargv[]){cout第一个“---”之后

c++ - 我很困惑! C++ 中的 Char、Char* 或 String

当我使用char或char*时,visualstudio2012(11)只计算最后一个字符,例如:#include#includeintmain(){usingnamespacestd;charchName='Alex';cout它只显示“x”。我用的是正确的字符串strName="Alex"但是在那些参数为字符的函数中,字符串不能作为参数传递。在这种情况下,VS编译器说字符串不能转换为int。还告诉我char和char*之间有什么区别。我是一名PHP开发人员,而C++是如此令人困惑。请帮助我。 最佳答案 char一次只能保留1个字

c++ - `const std::string& s = nullptr` 作为可选参数如何工作

据我所知,引用不能为空,但是当我运行这样的代码时:#include#includevoidtest(inti,conststd::string&s=nullptr){std::cout可选参数s可以为null,构建代码。更重要的是,当test(2)运行时,程序会抛出异常,而不是打印一些随机字符串。当我将s更改为一些基本类型(如int)时,它无法编译,所以我认为魔法留在字符串类中,但如何呢?而且,我如何检查s是否为空?如果我使用if(s==nullptr)或if(s.empty()),它无法编译。 最佳答案 test使用构造函数初始化

用std :: vector< std :: string&gt填充虚拟listView;

我有成千上万个字符串的向量:std::vectora;充满了一些算法。遵循描述的方法这里,这是我创建一个ListView作为“虚拟列表”:hList=CreateWindowEx(0,WC_LISTVIEW,L"",WS_CHILD|WS_VISIBLE|LVS_REPORT|LVS_OWNERDATA,0,0,800,400,hWnd,(HMENU)ID_LISTVIEW,hInst,NULL);LV_COLUMNlvcol;...ListView_InsertColumn(hList,0,&lvcol);ListView_SetItemCountEx(hList,100000,LVSICF

c++ - string::npos 如何知道我指的是哪个字符串?

我正在阅读一本关于C++的书,它只是介绍了如何使用string::npos检查字符串中是否存在字符位置。不过,我不明白这种机制怎么可能知道我指的是哪个字符串!此特定代码正在计算子字符串的出现次数。代码:for(inti=cats.find("cat",0);i!=string::npos;i=cats.find("cat",i)){++catCount;++i;}我知道它在单词第一次出现时开始循环,每次通过都会递增计数器以避免对同一个子字符串计数两次,然后在每次循环结束时计数器跳转到子字符串的下一次出现。当计数器不作为字符串的字符索引存在时,循环停止。虽然这个字符串叫做cats,但在“

c++ - 如何清除String流中的内容?

这个问题在这里已经有了答案:Howdoyouclearastringstreamvariable?(9个回答)关闭9年前。谁能告诉我如何清除字符串流的内容..?我尝试了以下但没有用。stringstreamss;ss我需要的输出只是“hi”..请告诉我

c++ - Arduino:命令 Serial.print ("some string text") 是否占用 SRAM?

我有一个相当大的Arduino项目(在eclipse中)使用Serial.print("somestringtext")命令进行大量调试消息,以便我可以一路调试。我注意到的一件事是我达到了项目中可以拥有的这些数量的限制。如果我放太多,程序会在非常奇怪的地方停止。即:通常在我最新添加的打印命令应该执行之前很久。目前我的项目.hex文件大约有20k。ArduinoUno限制在30kb左右,对吗?所以它不应该太大。所以我觉得实际的问题可能是这些串行命令正在填满我的sram。这只是2kb。我正在使用很多库。命令Serial.print("somestringtext")是否占用SRAM?gcc

java中的String.format()方法详解

介绍String.format()是Java中的一个字符串格式化方法,它用于生成指定格式的字符串。这个方法可以接受一个或多个参数,并将它们按照指定的格式插入到字符串中。它使用了类似于C语言中的printf函数的语法。String.format()方法的使用格式如下:String.format(format,args)其中,format是一个包含格式说明符的字符串,用于指定输出的格式,args是一个或多个要插入到格式字符串中的参数。下面是一个简单的示例:Stringname="John";intage=25;Stringmessage=String.format("Mynameis%sandIa