草庐IT

c++ - 接口(interface)设计: safety of overloaded function taking string and char array

假设我们有一个类可以写入输出内容classWriter{public:intwrite(conststd::string&str);intwrite(constchar*str,intlen);//...};我对这个、它的灵active以及所有这些都很好,直到我意识到char*buf=newchar[n];//notterminatedwith'\0'//loadupbufWriterw;w.write(buf);//compiles!那是一个真的讨厌的错误。我们可以通过一些模板进行一些修改classWriterV2{public:intwrite(conststd::string&s

c++ - 使用 const char * literal 作为 std::map 键是否安全?

我有类,每个类都返回它的名字structIFoo{virtualconstchar*GetName()const=0;}structFoo:IFoo{constchar*GetName()const{return"Foo";}}structBar:IFoo{constchar*GetName()const{return"Bar";}}还有别的地方:Foo*a=newFoo();Foo*b=newFoo();std::mapdata;data[a->GetName()]=0;printf("%i",data[b->GetName()]);字符串文字应该存储在内存中的一个地方,但它是100

c++ - 如何将单字节 const char* 转换为 UTF-8 编码

我有一个函数,它要求我传递一个由char*指向的UTF-8字符串,并且我有一个指向单字节字符串的char指针。如何在C++中将字符串转换为UTF-8编码?我可以使用任何代码来执行此操作吗?谢谢! 最佳答案 假设是Linux,您正在寻找iconv.当您打开转换器(iconv_open)时,您将传递from和to编码。如果您将空字符串作为from传递,它将从您系统上使用的应该与文件系统匹配的语言环境转换而来。在Windows上,您与MultiByteToWideChar几乎相同您将CP_ACP作为代码页传递的位置。但在Windows上,

c++ - 将 unsigned char * 转换为 char *

这是我的代码:std::vectordata;...//putsomedatatodatavectorchar*bytes=reinterpret_cast(imageData.data());我的问题是,在vector“数据”中,我有值为255的字符。在字节指针中转换后,我的值为-1而不是255。我应该如何正确转换此数据?编辑好吧,我真的不需要转换,只需要位序。感谢您尝试帮助 最佳答案 char可以是有符号的或无符号的,具体取决于平台。如果它已签名,就像在您的平台上一样,它的保证范围是从-128到127的标准。对于常见平台,它是一

c++ - 用 const char*const 解释 constexpr

这个问题在这里已经有了答案:What'sthedifferencebetweenconstexprandconst?(10个答案)关闭7年前。我有以下代码:staticconstexprconstchar*constmyString="myString";能否请您解释一下与以下内容的区别:staticconstchar*constmyString="myString";在这种情况下,constexpr有什么新内容?

c++ - 如何获取 char 数组中元素的地址?

我有一个char数组,我需要获取每个元素的地址。cout给我一​​个有效地址,但是如果我试图获取特定元素的地址,它会吐出垃圾:cout 最佳答案 std::coutoperator重载了对于char*,它会尝试打印它认为您的指针指向第一个字符的以nul结尾的字符串。但并非所有char数组都是以nul结尾的字符串,因此是垃圾。 关于c++-如何获取char数组中元素的地址?,我们在StackOverflow上找到一个类似的问题: https://stackove

c++ - "char[]"是正确的类型吗?

昨天,我惊讶地发现一些代码似乎将char[]视为一种类型:typedefstd::unique_ptrCharPtr;以前,我会这样写:typedefstd::unique_ptrCharPtr;//CustomdefinitionofCharDeleteromitted经过一些研究,我发现char[]语法是有效的,因为std::unique_ptr提供了一个模板专门化来处理数组(例如,它会自动调用delete[]用于数组而不需要自定义删除器)但是char[]在C++中究竟意味着什么?我见过这样的语法:constchara[]="Constantstring";//Example1ch

c++ - 如何在 C++ 中将命令行参数的整个集合(char**)作为只读传递?

假设我有这样一个程序:#include#include#include//Takesvaluesandoutputsastringvector.std::vectorfoo(constintargc,char*args[]){std::vectorstrings;for(inti=0;istrings=foo(argc,args);for(unsignedinti=0;i要点是我正在尝试将main()函数的char**参数传递给另一个函数或类。(我知道有更好的方法可以实现上述程序的功能,我的问题是关于将char**参数作为只读传递)。问题:我发现我不能像第一个那样使第二个foo()参数

c++ - 使用转换将 vector<char> 转换为字符串

我想转换一个vector到std::string并以一种方式进行转换。我快到了,但下面代码的结果是vector,而我想要一个字符串(vector中所有字符串部分的串联)。有关详细信息,请参阅我的代码示例。stringConvertHexToAscii(constcharinput){std::ostringstreamoss;oss(input);returnoss.str();}vectorreadBuffer;//thisismyinputreadBuffer.push_back(0x1c);readBuffer.push_back(0x09);vectorresultVec;st

c++ - C++中char[]的子串

我有chart[200];cin.get(s,200);inti=5;intj=10;除了将每个元素分别复制到另一个数组之外,是否有任何简单的方法可以从t获取substriing(i,j)?没有strings等。只有chart[200]。 最佳答案 如果允许修改t,可以将t[j]设置为0,然后使用t+i获取子字符串。如果没有,您将不得不制作一份拷贝。也就是说,您为什么不能只使用std::string来避免让自己头疼呢? 关于c++-C++中char[]的子串,我们在StackOverfl