草庐IT

char_set

全部标签

c++ - 从自定义 printf 函数返回 const char*

我编写了一个自定义打印函数。我的问题是我需要返回一个constchar*,因为它必须在另一个函数中使用。我根本不知道如何管理...anotherFunction(constchar*text/*Here*/,unsigned__int32value,unsigned__int64bigVal);我知道以下示例无法正常工作。这就是我到目前为止所尝试的。constchar*CatchMessage(constchar*message,...){va_listargs;va_start(args,message);/*?*/va_end(args);returnmessage;}我目前只设法

c++ - 类型为 "const char *"的值不能分配给类型为 "char"的实体 C OOP

我正在创建一个类来计算C++用户的成绩,我遇到了一个简单但烦人的问题。我知道这些错误是什么意思,但我不明白如何修复它,更改为字符串实际上可以解决问题,但这不是我想要做的。这里是错误:constchar*"cannotbeassignedtoanentityoftype"char代码#includeusingnamespacestd;classGradecalc{public:Gradecalc(){mark=0;}intgetmark(){returnmark;}voidsetmark(intinmark){mark=inmark;}voidcalcgrade(){if(mark>=7

c++ - visual studio 中涉及 void*、string 和 const char[] 的意外重载解析

我在visualstudio编译器(在VS2010和VS2012中测试)中遇到了以下意外的重载解析行为。最小的例子:#include#includevoidf(void*){std::cout输出:>f(void*)预期输出:>f(conststd::string&)用GCC编译(用4.6.3测试)生成预期的输出。如果我注释掉f()的“conststd::string&”版本,visualstudio会在没有任何警告的情况下愉快地在/W4上编译,而GCC会发出以下错误(如预期的那样):“来自'constvoid的无效转换*'到'void*'[-fpermissive]”。有谁知道为什么

c++ - 在 C++ 中有没有办法从不同的内存位置打印 char*?

我不确定这个问题是否有意义,所以我将尝试展示一个例子:想象一下,我在内存位置&s处有一个字符串(未以空值终止),在内存位置z处有另一个字符串(以空值终止)。chars[4];s[0]='a';s[1]='a';s[2]='a';s[3]='a';char*z=malloc(sizeof(char)*4);z[0]='a';z[1]='a';z[2]='a';z[3]='\0';char*y=malloc(sizeof(char)*4);y[0]='a';y[1]='a';y[2]='a';y[3]='\0';有没有办法表示字符串u,即s和z与另一个字符串的串联v,这是s和y的串联,而无

c++ - 指针,将 char ** 转换为 char *

我正在研究指针,但我被下面的示例程序难住了。它应该是将char**转换为char*,但我不明白程序背后的逻辑。程序在做什么?#includeusingnamespacestd;intmain(){char*notes[]={"cpp","python","java","mariadb"};void*base=notes;//notesandbase,holdstheaddressofnote'sfirstelementvoid*elemAddr=(char*)base+3*sizeof(char*);//ididn'tunderstandthisline???cout

C#的Char 结构的像IsLetterOrDigit(Char)等常见的方法

 目录一、Char结构的方法二、Char.IsLetterOrDigit方法1.Char.IsLetterOrDigit(Char)用法2.IsLetterOrDigit(String,Int32)方法三、Char.IsLetter方法1.IsLetter(Char)2.IsLetter(String,Int32)四、Char.IsDigit方法1. IsDigit(String,Int32)2.IsDigit(Char)五、Char.IsLower方法1. IsLower(Char)2.IsLower(String,Int32)六、Char.IsNumber方法1. IsNumber(Str

c++ - 如何提高 C++ 中的 std::set_intersection 性能?

在尝试使用C++中的std::set和Python中的set()期间,我遇到了无法解释的性能问题。在C++中设置交集至少比Python慢3倍。那么有人能指出我可以对C++代码进行的优化和/或解释Python如何更快地做到这一点吗?我希望他们都使用类似的算法,复杂度为O(n),而set是有序的。但可能Python做了一些优化,所以它达到了更小的系数。set_bench.cc#include#include#include#include#include#include#includevoidelapsed(std::functionf,conststd::string&s){autost

c++ - Python ctypes : initializing c_char_p()

我写了一个简单的C++程序来说明我的问题:extern"C"{inttest(int,char*);}inttest(inti,char*var){if(i==1){strcpy(var,"hi");}return1;}我把它编译成一个so.从python我调用:fromctypesimport*libso=CDLL("Debug/libctypesTest.so")func=libso.testfunc.res_type=c_intforiinxrange(5):charP=c_char_p('bye')func(i,charP)printcharP.value当我运行它时,我的输出

c++ - 限制 std::set 的大小

我有一个关于std::set容器的简短问题。现在我正在使用推回功能喂养我的集合。当然,对于每个push_back,集合变得越来越大。我只对最新的30个左右的元素感兴趣...可以删除较旧的元素。所以我的想法是将集合的大小限制为30个左右的元素,并通过这样做来摆脱不需要的旧元素。但是,该集合默认不支持限制。我可以偶尔检查一下集合的大小,然后手动删除多余的元素。有没有更聪明的方法?问候伦皮 最佳答案 作为解决方案,您可以将set数据结构封装到一个类中,并在该类中控制元素计数。 关于c++-限制

c++ - char 到大写赋值段错误

为了进一步了解C++的内部工作原理,我决定编写自己的字符串类。但是我被困在.toUpper()和.toLower()函数上。这是我的代码。Text&toUpper(){char*c=this->str;while(*c!=0,c++){if((*c>='a')&&(*c我已将导致段错误的行隔离到*c=*c-32但我不明白为什么这会导致问题。我尝试了(char)(*c-32)但这没有用。这也不是一个边界问题,因为没有任何输出。有什么想法吗?更新:我的构造函数Text(char*str){this->str=str;this->updateLength();//glorifiedstrle