草庐IT

c++ - char vs wchar_t何时使用哪种数据类型

我想了解char和wchar_t之间的区别吗?我知道wchar_t使用更多字节,但是我可以得到一个清晰的示例来区分何时使用char与wchar_t的区别 最佳答案 从根本上讲,当编码的符号数量超过wchar_t可以包含的数量时,请使用char。背景char类型具有足够的容量来容纳ASCII字符集中的任何字符(编码)。问题在于,许多语言需要的编码比ASCII帐户所需的更多。因此,需要更多而不是127种可能的编码。某些语言具有256种以上的可能编码。char类型不能保证范围大于256。因此需要新的数据类型。wchar_t(又称宽字符)为

c++ - 将单个字符转换为整数

如何将chara[0]转换为intb[0],其中b是动态分配的空int数组我试过了chara[]="4x^0";int*b;b=newint[10];chartemp=a[0];inttemp2=temp-0;b[0]=temp2;我想要4但它给了我ascii值52也在做a[0]=atoi(temp);给我错误:从“char”到“constchar*”的无效转换初始化“intatoi(constchar*)”的参数1 最佳答案 你需要做的:inttemp2=temp-'0';相反。 关于

c++ - 您如何处理标准库中的 signed char -> int 问题?

这是我工作中长期存在的问题,我意识到我仍然没有好的解决方案......C天真地为一个int定义了它所有的字符测试函数:intisspace(intch);但是char通常是带符号的,并且完整的字符通常不适合int或用于字符串的任何单个存储单元******。而这些函数已经成为当前C++函数和方法的逻辑模板,为当前的标准库奠定了基础。事实上,他们仍然受到支持,afaict。因此,如果您使用isspace(*pchar),您最终可能会遇到符号扩展问题。它们很难被发现,因此根据我的经验,它们很难防范。同样,因为isspace()和它的同类都采用整数,并且因为字符的实际宽度通常在没有字符串分析的

c++ - 指向 const char 与 char 数组与 std::string 的指针

这里有两行代码constchar*s1="test";chars2[]="test";两行代码具有相同的行为,所以我看不出我应该更喜欢s1而不是s2还是相反。除了s1和s2,还有使用std::string的方式。我认为使用std::string的方式是最优雅的。在查看其他代码时,我经常看到人们使用constchar*或chars[]。因此,我现在的问题是,什么时候应该使用constchar*s1或chars[]或std::string?有什么区别,在什么情况下我应该使用哪种方法? 最佳答案 POINTERS--------charc

c++ - 获取 char 的 ascii 值,C++ 中的 Ord 等价物

在delphi中存在一个名为Ord的函数which返回序号类型表达式的序号值。例如,您可以通过这种方式检索字符的Ascii值Ord('A')返回65Ord('a')返回97在C++中,我必须使用哪个函数来获取Char的ascii值? 最佳答案 一个简单的inta=c;应该可以工作,其中c是一个char。 关于c++-获取char的ascii值,C++中的Ord等价物,我们在StackOverflow上找到一个类似的问题: https://stackoverfl

c++ - C++0x 中 char 和 Unicode 的符号

从C++0x工作草案开始,用于处理Unicode的新字符类型(char16_t和char32_t)将是无符号的(uint_least16_tuint_least32_t将是基础类型)。但据我所知(也许不是很远)没有定义类型char8_t(基于uint_least8_t)。为什么?当您看到为UTF-8字符串文字引入了新的u8编码前缀时,它更加令人困惑......基于老friend(有符号/无符号)char.为什么?更新:有人提议添加一个新类型:char8_tchar8_t:UTF-8字符和字符串的类型(修订版1)http://www.open-std.org/jtc1/sc22/wg21

c++ - 从 DLL 导出 STL std::basic_string 模板时,出现 LNK2005 错误

好的,所以我已经阅读了几个关于这个主题的问题和文章,我觉得我了解基础知识,但我仍然遇到问题。我有一个DLL,它导出一个以std::string作为成员的类。我的主程序包含也有字符串的类,并且它使用DLL。如果我在VS2010中编译DLL,我会收到以下警告:warningC4251:'MyClass::data':class'std::basic_string'needstohavedll-interfacetobeusedbyclientsofclass'MyClass'当我编译EXE时,我得到了相同的警告,但没有错误,程序编译并运行。事实上,这是一个大项目,所以我收到了40条警告,我

c++ - 为什么第一个函数调用绑定(bind)到第一个函数?

这个问题在这里已经有了答案:Whydoespointerdecaytakepriorityoveradeducedtemplate?(1个回答)关闭6年前。为什么第一个函数调用(cm(car);)绑定(bind)到第一个函数?我知道第二次调用绑定(bind)到第二个函数,因为它不是模板,尽管两者都是完美匹配。如果第一个函数定义为固定数组长度的非模板,如:voidcm(constchar(&h)[8]){cout然后它再次被选中而不是第二个(第二个调用将以这种方式模棱两可)。代码:templatevoidcm(constchar(&h)[N]){std::cout输出:const(&)[

r data.table和string_elt()错误:如何修复“字符矢量” vs'char'错误?

从r3.3更新到r3.4后,我在使用时有一个错误data.table包裹:STRING_ELT()canonlybeappliedtoa'charactervector',nota'char'有人经历过吗?我正在考虑降级以“修复”此操作。这是我的会话信息:>sessionInfo()Rversion3.4.0(2017-04-21)Platform:x86_64-pc-linux-gnu(64-bit)Runningunder:Ubuntu16.04.2LTSMatrixproducts:defaultBLAS:/usr/lib/libblas/libblas.so.3.6.0LAPACK:/

c++ - 在 CUDA 内核中使用 char 变量会受到惩罚吗?

我似乎记得得到提示,我应该尽量避免在CUDA内核中使用char,因为SM喜欢32位整数。使用它们会有一些速度损失吗?比如做起来是不是比较慢inta[4];intb=a[0]+a[1]+a[2]+a[3];a[1]=a[3];a2[0]=a[0]比chara[4];charb=a[0]+a[1]+a[2]+a[3];a[1]=a[3];a2[0]=a[0]在内核代码中?注意事项:我对使用char值进行算术运算、执行比较以及将它们读写到内存中的惩罚很感兴趣。 最佳答案 预先快速说明:在C/C++中,char的符号是实现定义的。当使用ch