草庐IT

number_string

全部标签

c++ - std::string::c_str() 如何返回不会导致内存泄漏或未定义的 c 字符串内容的 c 字符串?

我正在为家庭作业编写一个类似于std::string的字符串类,但我无法弄清楚如何返回一个不会导致内存泄漏并保证保持不变的c字符串,直到它不再使用。我目前有:constchar*string::c_str(){charc[_size+1];strncpy(c,_data,_size);c[_size]='\0';returnc;}但是内容在调用后不久就被覆盖了。如果我进行动态分配,我要么会发生内存泄漏,要么在任何时候给定字符串中只能存在一个c字符串。我怎样才能避免这种情况? 最佳答案 但是c_str指向的字符串只有在std::str

C++ 通过引用 dll 中的函数传递 std::string

我在通过引用传递std::string以在dll中运行时遇到问题。这是函数调用:CAFCAFCArchive;std::stringsSSS=std::string("data\\gtasa.afc");AFCER_PRINT_RET(AFCArchive.OpenArchive(sSSS.c_str()));//AFCER_PRINT_RET(AFCArchive.OpenArchive(sSSS));//AFCER_PRINT_RET(AFCArchive.OpenArchive("data\\gtasa.afc"));这是函数头:#defineAFCLIBDLL_API__dec

c++ - 将 std::string ** 转换为 char *** 它恰好可以工作。如何?

考虑以下代码:std::vectorfoo{{"blee"},{"bleck"},{"blah0000000000000000000000000000000000000000000000000000000000000000000000000000000000"}};std::string*temp=foo.data();char***bar=reinterpret_cast(&temp);for(size_ti=0;i显然这是粗略的代码,但它恰好有效。http://ideone.com/2XAJYR我想知道它为什么有效?是否有一些我不知道的C++奇怪规则?还是仅仅是糟糕的代码和未定义的

c++ - 如何将 std::string 转换为 BSTR*?

如何将std::string转换为BSTR*?STDMETHODIMPCMyRESTApp::rest(BSTRdata,BSTR*restr){RESTClientrestclient;RESTClient::responseresp=restclient.get(data);Log("ResponseStatuscode:%s",resp.code);Log("ResponseBody:%s",resp.body);*restr=//herereturnS_OK;}我需要转换resp.body,然后将其返回给此处的*restr。 最佳答案

c++ - 临时 std::strings 返回垃圾

我还在学习c++,所以请多多包涵。我正在围绕boost文件系统路径编写一个简单的包装器——我在返回临时字符串时遇到了奇怪的问题。这是我的简单类(这不准确,但非常接近):typedefconstchar*CString;typedefstd::stringString;typedefboost::filesystem::pathPath;classFileReference{public:FileReference(constchar*path):mPath(path){};//returnsapathStringpath()const{returnmPath.string();};//

c++ - 从 ‘void’ 到非标量类型的转换‘std::pair<std::basic_string<char, std::char_traits<char>

我在电子表格obj中有一堆对:std::stack>undoStack;我正在尝试弹出堆栈并将其分配给另一对:std::pairchange=spreadsheets.at(i).undoStack.pop();我收到这个错误:error:conversionfrom‘void’tonon-scalartype‘std::pair,std::allocator>,std::basic_string,std::allocator>>’requested这里出了什么问题? 最佳答案 stack::pop()返回void但您正试图将其分配

c++ - 为什么转换函数不适用于 std::string?

考虑以下包含std::string类型转换函数的类:classSomeType{public:SomeType(char*value){_str=value;}operatorstd::string(){returnstd::string(_str);}private:char*_str;};以下代码片段无法编译并出现错误:没有运算符“==”匹配这些操作数intmain(intargc,char*argv[]){SomeTypea("test");if(a==std::string("test"))//ERRORonthisline{intdebug=1;}return0;}我意识到我

【git问题处理】SSL routines:ssl3_get_record:wrong version number问题解决小记

🐚作者简介:花神庙码农(专注于Linux、WLAN、TCP/IP、Python等技术方向)🐳博客主页:花神庙码农,地址:https://blog.csdn.net/qxhgd🌐系列专栏:GitHub开源📰如觉得博主文章写的不错或对你有所帮助的话,还望大家三连支持一下呀!!!👉关注✨、点赞👍、收藏📂、评论。如需转载请参考转载须知!!SSLroutines:ssl3_get_record:wrongversionnumber问题解决小记问题描述问题分析问题解决命令汇总全局代理——所有git命令都走此代理全局代理——针对特定域名设置代理局部代理——仅针对某仓库设置代理问题描述gitclone--br

c++ - std::vector<std::string> 崩溃

这个问题是myquestion的延续.这是有问题的代码。嗯:#include#includestd::vectorfoo();a.cpp#include"a.h"std::vectorfoo(){std::vectorv;returnv;}最后是main.cpp:#include"a.h"#includeintmain(){std::vectors=foo();return0;}编译如下(main.cpp是带STL调试标志编译的):g++-ca.cppg++-D_GLIBCXX_DEBUGmain.cppa.o运行a.out时,进程崩溃:Corewasgeneratedby`./a.o

c++ - getline 的实现(istream& is, string& str )

我的问题很简单,getline(istream,string)是怎么实现的?如何解决像getline(char*s,streamsizen)这样固定大小的char数组的问题?他们是否使用临时缓冲区和多次调用newchar[length]或其他整洁的结构? 最佳答案 getline(istream&,string&)以读取一行的方式实现。它没有明确的实现;每个库可能彼此不同。可能的实现:istream&getline(istream&stream,string&str){charch;str.clear();while(stream.