草庐IT

hex_char

全部标签

c++ - 将 char 数组从 C++ 传递到 Fortran

我在将char数组从C++传递到Fortran(f90)时遇到问题。这是我的C++文件,“cmain.cxx”:#includeusingnamespacestd;extern"C"intftest_(char(*string)[4]);intmain(){charstring[2][4];strcpy(string[0],"abc");strcpy(string[1],"xyz");cout这是我的Fortran文件“ftest.f90”:SUBROUTINEFTEST(string)CHARACTER*3string(2)CHARACTER*3expected(2)dataexpe

c++ - 何时使用 std::string 与 char*?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:C++char*vsstd::string我是从C#开始接触C++的新手,但我确实更喜欢C++。我有一个抽象类,它定义了两个常量字符串(不是静态的)。我想知道constchar*是否是更好的选择。我仍然了解C++标准,但我只是想在这种特殊情况下我真的没有任何理由需要使用std::string(没有附加或编辑字符串,只是写到通过printf控制台)。我应该在所有情况下都坚持使用std::string吗?

c++ - 如何从 'char const*' 中删除常量

看起来std::remove_const无法移除constchar*的常量性。考虑以下代码:#include#include#includetemplatestructS{staticvoidfoo(){std::cout::type).name()::foo();}此程序的输出(在VisualStudio2010上):charconst*charconst*在gcc中我们有可读的输出(代码here):PKcPKc我希望在Microsoft编译器的第二行获得char*,在gcc上获得任何(但不同于第一行)。我究竟做错了什么?如何将charconst*转换为char*?

c++ - string 如何处理非 ascii 符号而 char 不处理?

我理解C++中的char只是一种整数类型,它将ASCII符号存储为0到127之间的数字。斯堪的纳维亚字母'æ'、'ø'和'å'不是在ASCII表中的128个符号中。所以很自然地,当我尝试charch1='ø'时,我得到一个编译器错误,但是stringstr="øæå"工作正常,即使字符串使用char的right?string是否以某种方式转换为Unicode? 最佳答案 在C++中,有源字符集和执行字符集。源字符集是您可以在源代码中使用的字符集;但这不必与运行时可用的字符一致。如果您在源代码中使用不在源字符集中的字符,会发生什么情况

c++ - 使用 char 或 unsigned char 数组存储原始数据更好吗?

当需要在内存中缓冲一些原始数据时,例如来自流的数据,使用char数组还是unsignedchar数组更好?我一直使用char但在工作中有人说它更好unsignedchar我不知道为什么。 最佳答案 更新:C++17引入std::byte,这比使用任何方式的char更适合“原始”数据缓冲区。对于早期的C++版本:unsignedchar强调数据不“只是”文本如果您有有效的“字节”数据,例如一个压缩流、一个数据库表备份文件、一个可执行图像、一个jpeg...然后unsigned适合上面提到的二进制数据内涵unsigned更适合您可能希望

c++ - 在 C++ 中连接 char 数组

我有以下代码,并希望以一个字符结尾,例如:“你好,你好吗?”(这只是我想要实现的一个例子)如何连接2个字符数组并在中间添加“,”和“you?”最后呢?到目前为止,这连接了2个数组,但不确定如何将额外的字符添加到我想要的最终char变量中。#include"stdafx.h"#include#includeusingnamespacestd;int_tmain(intargc,_TCHAR*argv[]){charfoo[]={"hello"};chartest[]={"howare"};strncat_s(foo,test,12);cout编辑:这是我在您的所有回复之后想出的。我想知道

c++ - 无法在参数传递中将 'const char*' 转换为 'WCHAR*'

我在文档中写道,用户名、IP和密码必须是constchar*,当我将变量放入constchar时,出现此错误消息。这是我的代码:#include#include#include#includeusingnamespacestd;typedefint(__cdecl*MYPROC)(LPWSTR);intmain(){HINSTANCEhinstDLL;MYPROCProcAdd;hinstDLL=LoadLibrary("LmServerAPI.dll");if(hinstDLL!=NULL){ProcAdd=(MYPROC)GetProcAddress(hinstDLL,"LmSer

c++ - 很难理解 char (*p)[sizeof(c)]; 的优先级原则;

我正在学习指针并挑战自己,我尝试取消引用指向字符数组的指针。最终这成功了:char(*p)[sizeof(c)];其中c是一个数组c[]="something"我很难理解(*p)[sizeof(c)];与*p[sizeof(c)];的区别。p>根据我目前所知道的(这并不多!)计算机在(*p)[sizeof(c)];的情况下是这样说的:“p指向c!哦,顺便说一句,p是一个数组,无论sizeof(c)最终是什么”。但这对我来说似乎很奇怪,所以我想我对添加括号时所构造的内容感到困惑。谁能解释一下?上下文中的完整代码:#includeusingnamespacestd;intmain(inta

c++ - 为什么人们使用诸如 char*&buf 之类的东西?

我正在阅读StackOverflow上的一篇文章,我看到了这个函数:advance_buf(constchar*&buf,constchar*removed_chars,intsize);char*&buf在这里是什么意思,人们为什么要使用它? 最佳答案 这意味着buf是对指针的引用,因此它的值可以更改(以及它指向的区域的值)。我在C中相当陈旧,但AFAIK在C中没有引用并且这段代码是C++(注意问题最初被标记为c)。例如:voidadvance(char*&p,inti){p+=i;//changep*p=toupper(*p);

c++ - char* 到 char[]

我有char*,它具有固定(已知)宽度但不是空终止。我想把它传递给LOG4CPLUS_ERROR("Badstring"但由于它不是null终止的,它将全部打印出来。关于获得"(char[length])*char_pointer"的一些轻量级方法的任何建议不执行复制? 最佳答案 不,您必须对其进行深度复制和空终止。该代码需要一个以空终止符结尾的字符串,这意味着以空终止符结尾的连续字符block。 关于c++-char*到char[],我们在StackOverflow上找到一个类似的问题