草庐IT

CHAR_LENGTH

全部标签

c++ - 从 'const char**' 到 'char* const*' 的无效转换

我正在做一个学校作业,我必须调用execvp,其方法签名如下execvp(constchar*file,char*constargv[])但是我的数据是这样的:std::vector我一直在尝试将所述vector转换为execvp()的第二种格式的正确格式,但不可避免地会出现以下错误:command.cc:120:29:error:invalidconversionfrom‘constchar**’to‘char*const*’[-fpermissive]execvp(args[0],argv);我尝试了不同的变体,但它们都会导致此错误。这个错误让我很困惑,因为我不知道const*是什

c++ - 在最佳时间从 _variant_t 获取 char*

这是我想要加速的代码。它从ADO记录集中获取值并将其转换为char*。但这很慢。我可以跳过_bstr_t的创建吗?_variant_tvar=pRs->Fields->GetItem(i)->GetValue();if(V_VT(&var)==VT_BSTR){char*p=(constchar*)(_bstr_t)var; 最佳答案 BSTR的前4个字节包含长度。您可以遍历并获取每个其他字符(如果是unicode)或每个字符(如果是多字节)。某种memcpy或其他方法也可以。IIRC,这可能比W2A或类型转换(LPCSTR)(_b

c# - 如何使用 P/INVOKE 将 C++ char* 编码为 C# 字符串

我是C++新手。我正在使用PINVOKE从C#调用C++函数,并希望将字符串作为输出参数返回。但是我只得到一个空字符串。intout参数工作正常。导入:[DllImport(@"UnamanagedAssembly.dll",CharSet=CharSet.Ansi)]publicstaticexternintActivate(refintnumActivated,StringBuildereventsActivated);extern"C"__declspec(dllexport)intActivate(int*p_NumActivated,char*p_EventsActivate

c++ - 在 C 中初始化一个 char 数组。哪种方式更好?

以下是初始化char数组的两种方式:charcharArray1[]="foo";charcharArray2[]={'f','o','o','\0'};如果两者等同,人们会希望每个人都使用上面的第一个选项(因为它需要更少的击键)。但是我看到过作者总是不厌其烦地使用第二种方法的代码。我的猜测是,在第一种情况下,字符串“foo”存储在数据段中,并在运行时复制到数组中,而在第二种情况中,字符存储在代码段中,并在运行时复制到数组中.出于某种原因,作者对数据段中的任何内容都过敏。编辑:假设数组声明为局部函数。问题:我的推理是否正确?您喜欢哪种风格?为什么? 最佳答案

c++ - 为什么 "gptr"类型的basic_streambuf是char_type*而不是const char_type*?

设置流缓冲的三个“gptr”的basic_streambuf成员,setg声明为:protected:voidsetg(char_type*gback,char_type*gptr,char_type*egptr);我想知道:为什么每个gptr的类型都是char_type*而不是constchar_type*?在这里使用const_cast为这些gptrs使用constchar指针是否安全? 最佳答案 它不是const,因为streambuf接口(interface)不知道您如何填充缓冲区。例如,underflow和uflow方法可

c++ - 无法从 char (*)[10] 转换为 char** 作为返回

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Declaringafunctionthatreturna2Darrayinaheaderfile?我正在尝试为二维数组创建一个简单的getter函数,但我似乎无法找出发送它的正确语法。目前,我有以下内容:classSample{public:char**get2D();private:staticconstintx=8;staticconstinty=10;chartwo_d[x][y];};char**Sample::get2D(){returntwo_d;};

c++ - 在 std::operator << [With _Traits = std::char_traits<char> ] 中不匹配 'operator <<'

我有一个带有字符串转换运算符的Foobar类:#includeclassFoobar{public:Foobar();Foobar(constFoobar&);~Foobar();operatorstd::string()const;};我尝试这样使用它://C++源文件#include#include#include"Foobar.hpp"intmain(){Foobarfb;std::stringstreamss;ss我是否需要为Foobar显式创建一个运算符那么为什么会出现这个错误呢?我错过了什么?[编辑]我刚刚发现,如果我将发生错误的行更改为:ss编译成功。呃……!为什么编译器

c++ - 将 'const wchar_t *' 转换为 'unsigned char *'

在C++中是否可以将'constwchar_t*'转换为'unsignedchar*'?我该怎么做?wstringdirName;unsignedchar*dirNameA=(unsignedchar*)dirName.c_str();//Iamcreatingahashfromastringhmac_sha256_init(hash,(unsignedchar*)dirName.c_str(),(dirName.length)+1); 最佳答案 你需要一个字符一个字符地转换。有像wcstombs这样的函数可以做到这一点。

c++ - unsigned char 和 char 指针之间的区别

我对unsignedchar(在WinAPI中也是BYTE)和char指针之间的差异感到有点困惑。目前我正在处理一些基于ATL的遗留代码,我看到了很多如下所示的表达式:CAtlArrayrawContent;CALL_THE_FUNCTION_WHICH_FILLS_RAW_CONTENT(rawContent);returnArrayToUnicodeString(rawContent);//orreturnArrayToAnsiString(rawContent);现在,ArrayToXXString的实现如下所示:CStringAArrayToAnsiString(constCA

c++ - 无法将 char* 转换为 WCHAR* [qt/c++]

我正在开发QT应用程序,我需要包含纯C代码。当我在code::blocks中编译这段代码时,它是成功的,可能是一个警告,但是当我尝试在QTcreator中编译它时,我得到了这4个错误。cannotconvert'char*'to'WCHAR*'forargument'1'to'UINTGetSystemDirectoryW(WCHAR*,UINT)'cannotconvert'char*'to'constWCHAR*'forargument'1'to'HINSTANCE__*LoadLibraryW(constWCHAR*)'cannotconvert'char*'to'WCHAR*'