草庐IT

new_string

全部标签

c++ - 我应该在我的 C++ WIn32 应用程序中重写 operators new/delete

我知道Microsoft自己曾经建议通过调用HeapCreate()和HeapAlloc()来覆盖operatornew,但那是不久前的事了。有关详细信息,请参阅KB139638。在Win32上重写new/delete是否仍然有益?推荐的实现方式是什么?TIA。 最佳答案 这篇文章说你可以做,而不是说你应该。其中的代码写得很糟糕,一点也不有趣,而且它不是线程安全的。通常,提供的new和delete实现可以很好地满足所有一般编程需求。只有当您确定了重新实现可以解决的特定问题时,您才应该考虑重新实现它们。

c++ - 可以在构造函数中分配 std::string 吗?

我有以下构造函数:TCPConnector(int32_tfd,stringip,uint16_tport,vector&protocolChain,constVariant&customParameters):IOHandler(fd,IOHT_TCP_CONNECTOR){_ip=ip;_port=port;_protocolChain=protocolChain;_closeSocket=true;_customParameters=customParameters;}我想知道是否可以在构造函数中安全地分配一个字符串(即_ip)而无需显式初始化它? 最

java - 如何在 JNI 中访问从 C++ 返回 java.lang.String 的 Java 方法的返回值?

我正在尝试从C++调用的Java方法传回一个字符串。我无法找出应该调用什么JNI函数来访问该方法并返回一个jstring值。我的代码如下:C++部分main(){jclasscls;jmethodIDmid;jstringrv;/**...omittedcode...*/cls=env->FindClass("ClassifierWrapper");mid=env->GetMethodID(cls,"getString","()Ljava/lang/String");rv=env->CallStaticMethod(cls,mid,0);constchar*strReturn=env-

c++ - 在 valgrind 中将 QSharedPointer 与 new[] 一起使用会产生 "Mismatched free()/delete/delete[]"

我有以下代码:QPair,int>someclass::somefunction(){intsiz=data_size();QSharedPointerbuffer(newunsignedint[siz]);//Fillthebuffer...returnqMakePair(buffer,siz);}在某些时候,此函数返回的QSharedPointer将超出范围,构造函数中设置的指针将被释放。使用valgrind3.6.1,出现“不匹配的free()/delete/delete[]”错误。我对QSharedPointer的使用有什么问题吗?还是我只能忍受这个valgrind警告?

C++ Int 到 String 通过使用 ostringstream 或 stringstream

我一直在使用stringstream将Integer转换为String,但后来我意识到可以使用ostringstream完成相同的操作。当我使用.str()时,它们之间有什么区别?另外,有没有更有效的方法将整数转换为字符串?示例代码://usingostringstreamostringstreams1;inti=100;s1 最佳答案 还有第三个你没有提到,istringstream,你不能使用(你可以,但它会有所不同,你不能将转换为istringstream)。stringstream既是ostringstream和一个istr

c++ - 通过 new 赋值一个复杂的构造函数

我有一个困惑。以下是一段代码。我想使用new创建一个包含五个类对象的动态数组,但我想运行一个循环以使用循环计数器分配构造函数的第一个参数。类似的东西。classA{public:A(int_x,int_y):x(_x),y(_y){}private:intx,y;};intmain(){A*a=newA[5];//compilererrorfor(i=0;i谁能告诉我正确的语法是什么,因为我没有简单的构造函数? 最佳答案 这一行A*a=newA[5];要求A是默认可构造的。因此,一个简单的选择是将默认构造函数添加到A:A():x()

c++ - 为什么这个编译器错误? - 没有匹配函数调用 'std::basic_ofstream<char>::open(std::string&)'

这适用于VisualStudio,并且适用于一台计算机上的GCC4.9.2。但在不同的计算机上,我认为它是相同的GCC4.9.2编译器,但它给了我这个错误。我错过了什么吗?怎么回事?#include#include#includeusingnamespacestd;intmain(){stringfilename;filename="teststring";ofstreamfout;fout.open(filename);fout.||===Build:Debuginfileiotest(compiler:TDM32GNUGCCCompiler4.9.2dw2)===|F:\Users

c++ - std::string 的 strlen(str.c_str()) 和 str.length() 之间的区别

作为一种隐含的理解,我一直认为std::string的每一个实现必然必须满足strlen(str.c_str())==str.length()对于每个字符串str。C++标准对此有何规定?(是吗?)背景:至少VisualC++和gcc附带的实现没有这个属性。考虑这个例子(参见hereforaliveexample)://Output://stringsaysitslengthis:13//strlensays:5#include#include#includeintmain(){std::stringstr="Hello,world!";str[5]=0;std::cout当然,没有注

c++ - std::string 与静态常量的 char 数组

我想在我的cpp文件中的多个位置使用字符串常量。我应该使用std::string还是char[]?staticconststd::stringkConstantString="ConstantStringValue";staticconstcharkConstantString[]="ConstantStringValue";有人告诉我更喜欢后者,因为它“避免了静态分配”。char数组不是也必须静态分配吗? 最佳答案 是的,是的,它也必须静态分配。总是使用std::string除非你的探查器告诉你它值得惹恼像constchar[]这

c++ - 'clear'可以赋值给std::string,为什么会有 ""方法?

可以使用string::clear函数来清空字符串,也可以使用空双引号""来做到这一点。有什么区别? 最佳答案 当您分配一个空字符串时,编译器必须在数据部分存储一个空的C字符串,并创建代码以将指向它的指针传递给赋值运算符。然后赋值运算符必须从数据部分读取,只是为了找出您传递了一个空字符串。使用clear(),编译器只生成一个不带任何参数的函数调用。数据部分没有空字符串,没有传递指针,没有读取等。你甚至可能有一个编译器,可以优化它。我不知道是否有,但标准库不能依赖特定的编译器功能,这不是必需的。一个更重要的区别是表达意图。如果您希望代