草庐IT

hex_char

全部标签

c++ - 在没有 C++ 11 的情况下使用 char16_t、char32_t 等?

我想要固定宽度的类型,包括字符类型。提供整数类型,但不提供字符类型,除非在使用C++11时,这是我做不到的。是否有一种干净的方法来定义这些类型(char16_t、char32_t等)而不与C++11定义的类型发生冲突,以防源代码与C++11混合?谢谢你:) 最佳答案 我认为,检查是否支持这种类型是平台相关的事情。例如,GCC定义:__CHAR16_TYPE__和__CHAR32_TYPE__如果提供了这些类型(需要ISOC11或C++11支持)。但是,您不能直接检查它们的存在,因为它们是基本类型,而不是宏:InC++,char16_

c++ - 在编译时或运行时将 const char * 映射到 duck-typed T

我有很多类A、B、C、D等,它们都是鸭子类型的,因此具有相同的方法和接口(interface),但不是从同一个类继承的。例如classA{public:voidfoo();voidbar();}classB{public:voidfoo();voidbar();}classC{public:voidfoo();voidbar();}我想在运行时将constchar*映射到这些类之一的相应实例,例如“A”->Aa“B”->Bb这里a是类A的一些实例。或在编译时将'constchar*`映射到相应的类型,例如“A”->A我需要在其他一些函数调用中使用该对象的实例(即调用foo()或bar(

python - 如何使用 boost.python 将预填充的 "unsigned char*"缓冲区传递给 C++ 方法?

我有一个C++类,它有一个成员函数,它接受一个unsignedchar*缓冲区和一个unsignedint长度作为参数并对它们进行操作。我已经用Boost::Python包装了这个类,并希望将一个预填充的缓冲区从Python脚本传递给这个类。Python端缓冲区是使用struct.pack创建的。我不知道如何使参数类型匹配并不断收到Boost.Python.ArgumentError。include/Example.h#ifndefEXAMPLECLASS_H_#defineEXAMPLECLASS_H_#includeclassExampleClass{public:ExampleC

c++ - 为什么我不允许将返回 const char* 的函数的结果分配给 char*,但可以将字符串文字(常量)分配给 char*?

这个问题在这里已经有了答案:WhatisthetypeofstringliteralsinCandC++?(4个答案)关闭6年前。返回constchar*的函数不能分配给char*constchar*func(){return"Thisisaconststringtwo";}但是char*直接在main中赋值了一个常量字符串:intmain(){char*d="thisisaconststringone";//worksfinechar*e=func();//errorcannotconvertfrom'constchar*'to'char*'return1;}为什么矛盾?

c++ - 在 C++ 中将 projectDir 作为字符串或 char*

我看到了几个与这个主题相关的问题,但我没有找到简单通用的方法。我的问题是:如何在我的C++代码中将$(projectDir)或另一个宏作为string或char*?谢谢 最佳答案 如果你的编译器支持rawstrings然后您可以将MYMACRO=R"($(ProjectDir))";添加到预处理器定义(来自VisualStudio2013的屏幕截图):然后您可以将以下内容添加到您的代码中:#pragmamessage("MYMACRO=="MYMACRO)//willprintprojectdirduringcompilations

c++ - char_traits<char16_t>::int_type 的大小不够大吗?

考虑以下程序:#include#include#includeintmain(int,char**){std::basic_stringstreamstream;stream.put(u'\u0100');std::cout输出是:Bad:0Bad:0Bad:1设置badbit的原因似乎是因为如果字符等于std::char_traits::eof(),'put'设置badbit。我现在不能再投入流中了。在http://en.cppreference.com/w/cpp/string/char_traits它指出:int_type:anintegertypethatcanholdallv

c++ - 为什么我不能使用与 'const int*' 相同的 'const char*' 创建一个 int 数组?

为什么我可以用这种方式创建一个字符串或字符数组:#includeintmain(){constchar*string="Hello,World!";std::cout?并且它正确输出第二个元素,而如果没有数组的下标符号[]我就不能创建整数类型的数组?char的一个和这个有什么区别:constint*intArray={3,54,12,53};。 最佳答案 “为什么”是:“因为字符串文字很特殊”。字符串文字存储在二进制文件中,作为程序本身的常量部分,constchar*string="Hello,World!";只是将文字视为存储在别

c++ - C++ char如何区分ASCII和UNICODE

我目前正在使用C++编写一个可以处理字母和韩文字符的程序。但是我了解到c++中char的大小只有1个字节。这意味着为了处理外来字符或UNICODE,它需要为一个字符使用两个字符。strings=string("a가b나c다");cout打印9但我的问题是C++执行如何区分这两种不同类型的字符?例如,如果我制作一个大小为9的char数组,它如何知道它是9个ascii字符还是4个unicode+1个ascii?然后我想通了:charc;inta;char*cp="가나다라마바사아";for(inti=0;i只打印a的负值。cval:aval:-80cval:aval:-95cval:ava

c++ - 关于 'char' 的奇怪程序行为

我在学习if-else语句时编写这段代码只是为了好玩。当我数字10e时出现奇怪的行为,程序返回错误,但我不明白为什么!我的意思是,使用其他单位(例如“d”或“y”)时效果很好,但当我输入“e”时,它就疯了!基本上,程序会转换用户输入的数字,以数字后面的单位为单位。例如,如果您输入10d,它将返回多少日元的10英镑。看看://money_exchange.cpp:Amoneyexchangesimulatorthatconvertsanyratetopound.//Thestandardratescanbeupdateddaily.#include"stdafx.h"#include".

c++ - char c = 255 的值转换为 int

我的问题是关于Stroustrup的《C++编程语言》第4版一书中的一段话。他举了一个例子charc=255;//255is‘‘allones,’’hexadecimal0xFFinti=c;以及如何在char有符号或无符号的机器上转换它的解释。i的值是多少?不幸的是,答案是不确定的。在8位字节的实现中,答案取决于扩展为int时“全部”char位模式的含义。在char没有符号的机器上,答案是255。在char有符号的机器上,答案是−1。我的问题是为什么它会是-1,这不是取决于机器上使用的二进制数表示形式吗?如果它使用一个补码,它不是0(-0)吗?如果使用二进制补码,它不是-1吗?