草庐IT

char_sequence

全部标签

为 Ruby FFI 接口(interface)从字符串转换为 const char* 时的 C++ 字符编码

我正在使用一个外部C++库,它执行一些HTTPS通信并提供XML服务器响应。在服务器端,响应是通过ISO-8859-15编码的,我得到一个std::string表示来自API的响应。当我打印出来/将其写入文件时,它看起来是正确的。必须将std::string和int错误代码传递给我的外部调用方。所以我在结构中返回这两个值:extern"C"{structFoobarResponse{constchar*responseText;intreturnCode;};}不幸的是,我必须借助std::c_str()将std::string响应转换为constchar*C风格的字符串表示形式之前。

c++ - 类型 "char (&(...)) [2]"是什么意思?

我遇到了以下代码:字符(&f(...))[2];我检查了它的类型(使用typeid和c++filt)并得到:字符(&(...))[2]但我无法理解这种类型。[2]是让我失望的部分。没有它,我可以在函数定义中复制类型,例如:字符(&f(...))f与h中的类型相同(至少从typeid+c++filt的输出来看):字符&h(...) 最佳答案 它是一个函数声明,具有不同数量的参数并返回对两个元素的字符数组的引用。它可以通过使用typedef声明得更简单。例如typedefcharchar_array[2];char_array&f(..

c++ - isdigit(c) - char 或 int 类型?

我编写了以下代码来测试给定的输入是否为数字。#include#include#includeusingnamespacestd;main(){charc;cout>c;if(isdigit(c))//intisdigit(intc)orcharisdigit(charc){cout我的问题是:输入变量类型应该是什么?字符还是整数? 最佳答案 不幸的是,情况比其他答案所告诉的要复杂一些。首先:你的代码的第一部分是正确的(不考虑多字节编码);如果你想读单char与cin,你必须使用char变量与>>运算符(operator)。现在,关于

c++ - 查找 sizeof char 数组 C++

我试图在另一个初始化它的函数中获取sizeofchar数组变量,但是无法获取正确的sizeof。请看下面的代码intfoo(uint8*buffer){cout输出是:sizeof:4sizeofafterfoo():13期望的输出是:sizeof:13sizeofafterfoo():13 最佳答案 单靠指针是做不到的。指针不包含有关数组大小的信息——它们只是一个内存地址。因为数组在传递给函数时会衰减为指针,所以您会损失数组的大小。然而,一种方法是使用模板:templatesize_tfoo(constT(&buffer)[N])

c++ - reinterpret_cast unsigned char* as uint64_t* - 这是 UB 吗?

假设我们采用一个非常大的unsignedchar数组。std::arrayblob;//...fillarray...(注意:它已经对齐了,问题不在于对齐。)然后我们将其作为uint64_t[]并尝试访问它:constautoptr=reinterpret_cast(blob.data());std::cout转换为uint64_t然后从中读取对我来说看起来很可疑。但是UBsan,-Wstrict-aliasing并没有触发它。Google在FlatBuffers中使用了这种技术.此外,Cap'n'Proto使用此too.这是未定义的行为吗? 最佳答案

c++ - boost::filesystem::path::native() 返回 std::basic_string<wchar_t> 而不是 std::basic_string<char>

尽管以下代码可以在Linux上编译,但我无法在Windows上编译它:boost::filesystem::pathdefaultSaveFilePath(base_directory);defaultSaveFilePath=defaultSaveFilePath/"defaultfile.name";conststd::strings=defaultSaveFilePath.native();returnsave(s);其中base_directory是一个类的属性,它的类型是std::string,而函数save只需要一个conststd::string&作为参数。编译器提示第三

c++ - 没有匹配函数调用 `std::basic_ofstream<char, std::char_traits<char>>::basic_ofstream(std::string&)'

我正在尝试编写一个程序,要求用户输入文件名,然后打开该文件。当我编译它时,出现以下错误:nomatchingfunctionforcalltostd::basic_ofstream>::basic_ofstream(std::string&)这是我的代码:usingnamespacestd;intmain(){stringasegurado;cout>asegurado;ofstreamentrada(asegurado,"");if(entrada.fail()){cout 最佳答案 std::ofstream如果您有C++11或

ios - 将 BIO 保存到 char* 中(来自 SMIME_write_CMS)

我想将一个BIO保存(管道/复制)到一个字符数组中。当我知道它的大小时它起作用,但否则不起作用。例如,我可以使用这个将我的char*的内容存储到一个BIO中constunsignedchar*data=...myBio=BIO_new_mem_buf((void*)data,strlen(data));但是当我尝试使用SMIME_write_CMS时,它需要一个BIO(我之前创建的)作为输出,它不起作用。constintSIZE=50000;unsignedchar*temp=malloc(SIZE);memset(temp,0,SIZE);out=BIO_new_mem_buf((v

ios - 为什么 char 数组在 Objective C 中转换为字符串时会插入尾随字符?

我正在尝试在NSString上编写一个快速类别以对字符串的内容进行base64编码。一切似乎都很好,除了在生成的字符串的尾部出现额外的字符。谁能解释为什么以下代码会产生以下输出?来源:constcharbase64CharSet[64]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r',

iphone - 你可以在 iPhone 上使用 C open(const char* name, int flag) 函数吗?

我正在尝试移植一个库以在iPhone上运行,它使用内存映射和其他一些东西。我注意到一堆#defines也丢失了(O_RDONLY),它们应该在中定义。. 最佳答案 您可以使用它,但默认情况下,fcntl.hheader不包含在Foundation或UIKit框架中。要使用open(2)系统调用,只需在您使用它的任何地方导入该header(或将其添加到预编译的header文件中)。例如:#import//nowyoucanuseopenorimportyourlibraryheaderfiles