草庐IT

str_start

全部标签

c++ - VS2012 错误 : The application was unable to start correctly (0xc000007b)

在尝试运行我在VisualStudio2012中构建的C++SFML32位程序的exe文件后,我收到错误“应用程序无法正确启动(0xc000007b)”。我在我的项目中静态链接了SFMLdll,但将以下dll与我的程序结合在一起:libsndfile-1.dllopenal32.dllmsvcp110.dllmsvcp110d.dllmsvcr110.dllmsvcr110d.dll问题是什么? 最佳答案 您遇到的实际错误代码是0xC000007B。那就是NTSTATUS错误代码STATUS_INVALID_IMAGE_FORMAT

c++ - 如果没有正确删除,为什么 wstring::c_str 不会导致内存泄漏

代码段1:wchar_t*aString(){wchar_t*str=newwchar[5];wcscpy(str,"asdf\0");returnstr;}wchar_t*value1=aString();代码段2wstringwstr=L"avalue";wchar_t*value=wstr.c_str();如果代码段2中的值未被删除,则不会发生内存泄漏。但是,如果代码段1中的value1未被删除,则存在内存泄漏。wstring::c_str的内部代码在我看来是一样的。 最佳答案 一条重要规则:您必须对new创建的任何内容使用d

c++ - 为什么data()和c_str()返回的是char const*,而operator[]返回的是char&?

为什么std::string::data和std::string::c_str()返回指向const字符的指针,而std::string::operator[]返回对可变字符的引用?std::stringstring("eightfoldisthegreatest");autos=string.data();*s='r';//illegalautot=&string[0];*t='r';//totallyfineauto&c=string[0];c='r';//totallyfine为什么std::string::data()和std::string::c_str()不返回char*,

c++ - 如何从 std 字符串 (c_str()) 设置 char * 值不起作用

我不知道,但这对我不起作用,当我尝试从返回标准字符串的函数中设置char*值时,我得到了垃圾值:stringfoo(){stringtmp="dummyvalue";returntmp;}char*cc=(char*)foo().c_str();//ifiremovethecastingimgettingerror//wheniprinttheccigetgarbageprintf("%s",cc); 最佳答案 cc指向的数据的生命周期与它来自的字符串的生命周期相同(充其量-如果您修改字符串,它甚至更短)。在你的例子中,foo()的

Starting MySQL. mysqld_safe error: log-error set to ‘/var/log/mariadb/mariadb.log‘,however file don‘

@[TOC](Mysql启动报错并成功解决:StartingMySQL.2023-11-16T06:24:39.857506Zmysqld_safeerror:log-errorsetto‘/var/log/mariadb/mariadb.log’,howeverfiledon’texists.Createwritableforuser‘mysql’.TheserverquitwithoutupdatingPIDfile(/var/lib/mysql/y[FAILED]d))当我们启动MySQL数据库时,一直报错。。。。。。。。。。。。在网上找了很多种方法都无法解决,终于…皇天不负有心人,终于

c++ - 如何在 va_start 中使用字符串?

出于某种原因,我无法正常工作:voidexamplefunctionname(stringstr,...){...va_start(ap,str.c_str());我也没有得到这个工作:voidexamplefunctionname(stringstr,...){...intlen=str.length();char*strlol=newchar[len+1];for(inti=0;i但这确实:voidexamplefunctionname(constchar*str,...){...va_start(ap,str);有人可以告诉我如何使用字符串代替constchar*吗?当我调用ex

c++ - Valgrind: "Invalid read"与 c_str 和 strtod

我正在使用strtod()来转换一些输入字符串。在用valgrind检查我的代码时,我遇到了“大小为8的无效读取”。如果b以“i”或“n”开头,则会显示该消息,这就是我到目前为止所发现的。另外,如果我直接创建一个constchar*(不调用c_str()),strtod似乎也可以。这是代码:#include#includeintmain(intargc,char**argv){char*a=0;std::stringb="i";constchar*c=b.c_str();doubled=strtod(c,&a);}和(详细的)valgrind输出:==12638==Memcheck,a

C++ memcpy 从 c_str 到 char*

我已经做了一些基本的阅读,从我收集到的内容来看,.c_str()总是有一个空终止符。我有一个相当简单的C++程序:intmain(intargc,char**argv){std::stringfrom="hello";charto[20];memcpy(to,from.c_str(),strlen(from.c_str())+1);std::coutmemcpy是否会确保我将一个以null结尾的字符串复制到我的变量中(前提是我的字符串长度较短)? 最佳答案 您应该使用std::string来复制字符串。但是,如果你想那样做,你应该使

c++ - 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>::c_str':非标准语法;使用 '&' 创建指向成员的指针

我正在尝试创建一个可以读取和编译opengl顶点和片段着色器文件的函数,但是我收到了这个错误:'std::basic_string,std::allocator>::c_str':non-standardsyntax;use'&'tocreateapointertomember我不太确定如何修复它。这是我的代码:GLuintshader_load(constGLchar*vertex,constGLchar*fragment){std::stringver=file_read_all(vertex);std::stringfrag=file_read_all(fragment);con

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