草庐IT

months3char

全部标签

c++ - 如何将 const char* 转换为字符串,然后再转换回 char*?

我刚开始使用C++,很难理解constchar*。我正在尝试将方法中的输入转换为string,然后更改字符串以在我想要的位置添加连字符并最终获取该字符串并将其转换回char*返回。到目前为止,当我尝试这个时,它给我一个总线错误10。char*getHyphen(constchar*input){stringvowels[12]={"A","E","I","O","U","Y","a","e","i","o","u","y"};//convertchar*tostringstringa;inti=0;while(input!='\0'){a+=input[i];input++;i++;}

c++ - 为什么 char 既没有符号也没有符号,而 wchar_t 是?

下面的C++程序编译没有错误:voidf(char){}voidf(signedchar){}voidf(unsignedchar){}intmain(){}同一程序的wchar_t版本不会:voidf(wchar_t){}voidf(signedwchar_t){}voidf(unsignedwchar_t){}intmain(){}错误:‘voidf(wchar_t)’的重新定义voidf(signedwchar_t){}wchar_t似乎是unsigned。为什么重载会出现不一致? 最佳答案 char都是不同的类型,可以重载[

c++ - 通过 bool 进行的 char 往返转换会发生什么情况?

关于将char转换为bool然后再次转换回char,C++语言定义promise什么?charoriginal=255;boolnext=original;charfinal=next;此外,在这种情况下,除了语言保证的内容之外,大多数编译器会做什么? 最佳答案 这将给出零值或一值,具体取决于原始值是零还是非零。转换为bool给出true或false的值:4.12Azerovalue,nullpointervalue,ornullmemberpointervalueisconvertedtofalse;anyothervalueis

c++ - 处理 char* 字符串的正确方法是什么?

我有一个第三方库使用char*(非常量)作为字符串值的占位符。为这些数据类型赋值的正确且安全的方法是什么?我有以下测试基准,它使用我自己的计时器类来测量执行时间:#include"string.h"#include#includeusingnamespacestd;intmain(){sj::timer_chronosw;intiterations=1e7;//firstmethodgivescompilerwarning://conversionfromstringliteralto'char*'isdeprecated[-Wdeprecated-writable-strings]c

c++ - 如何在不制作拷贝的情况下将 `std::string` 转换为 `std::vector<unsigned char>`?

我想调用一个库函数,它的签名是:boolWriteBinary(conststd::vector&DataToWrite);我有一个std::string变量,我想将这个函数作为参数发送给它。voidWriteString(conststd::string&TextData){//...WriteBinary(TextData);//有没有一种方法可以直接发送std::string变量而不复制它? 最佳答案 没有办法做到这一点,因为不能保证这两种类型的布局在任何方面都相似。最好的方法是修复WriteBinary以使用“迭代器”代替:

c++ - 不存在从 "std::string"到 "const char *"的合适转换函数

我正在尝试删除.txt文件,但文件名存储在类型为std::string的变量中。问题是,程序事先不知道文件名,所以我不能只使用remove("filename.txt");stringfileName2="loInt"+fileNumber+".txt";基本上我想做的是:remove(fileName2);但是,它告诉我不能使用它,因为它给我错误:Nosuitableconversionfunctionfrom"std::string"to"constchar*"exists. 最佳答案 remove(fileName2.c_st

c++ - 是 unsigned char ('0' ) 合法的 C++

以下代码在VisualStudio中编译但在g++下编译失败。intmain(){inta=unsignedchar('0');return0;}unsignedchar()是一种有效的C++转换方式吗? 最佳答案 不,这是不合法的。函数式显式类型转换需要一个简单类型说明符,后跟一个带括号的表达式列表。(§5.2.3)unsignedchar不是简单类型说明符;这与James提出的问题有关.显然,如果unsignedchar是一个简单类型说明符,它将是合法的。解决方法是使用std::identity:templatestructid

c++ - 在 C++ 中将 unsigned char 转换为 int

我有一个包含值的变量unsignedchar,例如40。我想要一个int变量来获取该值。最简单、最有效的方法是什么?非常感谢。 最佳答案 unsignedcharc=40;inti=c;大概你的问题肯定不止于此...... 关于c++-在C++中将unsignedchar转换为int,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/10563642/

char* 上 memset 的 C++ 等价物

我有这个代码char*oldname=newchar[strlen(name)+1];memcpy(oldname,name,strlen(name)+1);name=newchar[strlen(oldname)+strlen(r.name)+1];memset(name,'\0',strlen(name));strcat(name,oldname);strcat(name,"");strcat(name,r.name);我明白使用memcpy和memset是不行的,但我还不明白如何在C++中使用它,最好不使用std。有人知道吗?谢谢。 最佳答案

c++ - 为什么我可以使用 const char* 作为 std::map<std::string, int> 中的键

我已经定义了一个数据结构std::mapa;我发现我可以像这样传递constchar*作为键:a["abc"]=1;哪个函数提供了从constchar*到std::string的自动类型转换? 最佳答案 std::string有一个constructorthatallowstheimplicitconversionfromconstchar*.basic_string(constCharT*s,constAllocator&alloc=Allocator());表示隐式转换,例如std::strings="Hello";是允许的。这