草庐IT

char_type

全部标签

c++ - 通过引用 const char* 传递字符串文字无法使用 g++ 4.6.3 进行编译

这是来自C++Primer,第4版,第16章的示例,它是关于模板特化的。templateintcompare(constT&v1,constT&v2){if(v1intcompare(constchar*const&v1,constchar*const&v2){returnstrcmp(v1,v2);}intmain(intargc,constchar*argv[]){cout我预计compare("abc","defg")将调用模板的专用版本。但事实是,g++4.6.3不会编译此代码并给出以下错误:error:nomatchingfunctionforcallto'compare(c

c++ - 使用 mmap() 时从 'void*' 到 'char*' 的无效转换

我有以下片段:char*filename;unsignedlonglongintbytesToTransfer;intfd,pagesize;char*data;fd=open(filename,O_RDONLY);if(fd==NULL){fputs("Fileerror",stderr);exit(1);}cout但是当我编译时,我收到:error:invalidconversionfrom‘void*’to‘char*’[-fpermissive]data=mmap((caddr_t)0,bytesToTransfer,PROT_READ,MAP_SHARED,fd,0);有人可

c++ - 循环中的 Stroustrup 和溢出 size_type

我正在阅读BjarneStroustrup的“使用C++的编程原则和实践”,我需要对我在第25.5.3节中发现的令人惊讶的部分进行澄清。作者声称如果我们想遍历std::vector,然后使用像这样的循环变量for(vector::size_typei=0;i不如对vector使用迭代器安全类:for(vector::iteratorp=v.begin();p!=v.end();++p)因为,作为无符号类型,i可能会溢出。他指出使用迭代器的循环没有这样的限制。我有点困惑,因为我了解到size_type保证足够大以表示可能的最大vector,因此size_type类型的变量永远不会在这样的

C++ vector::size_type:有符号与无符号;整数与长

我一直在通过在不同平台上编译我的应用程序来对其进行一些测试,从64位系统到32位系统的转变暴露出许多问题。我大量使用vector、字符串等,因此需要对它们进行计数。但是,我的函数也使用32位无符号数,因为在许多情况下我需要显式使用正整数。我在处理看似简单的任务时遇到了问题,例如std::min和std::max,它们可能更系统化。考虑以下代码:uint32_tgetmax(){return_vecContainer.size();}看起来很简单:我知道一个vector不能有负数的元素,所以返回一个无符号整数是完全合理的。voidsetRowCol(constuint32_t&r_row

c++ - "lightweight type categorization idiom"的最简单实现?

我的目标是实现一个检测嵌套using是否存在的谓词别名(或typedef)充当轻量级标签以指示类具有某些属性(用于泛型编程)。例如,has_my_tag谓词的行为应如下所示:structA{usingmy_tag=void;};structB{};intmain(){static_assert(has_my_tag::value,"");//evaluatetotrueifmy_tag=voidispresentstatic_assert(!has_my_tag::value,"");//falseotherwise}用户@JoelFalcou称其为“轻量级类型分类成语”并在thisa

C++ 将字节从 char* 传递到 BYTE*

我想知道如何在Windows的C++中将表示为char*的字节序列传递/复制到BYTE*。假设我有这个char*:constchar*ByteString="\x3B\xC8\x74\x1B"我如何将此char*中的每个字节复制到BYTE*Bytes中,反之亦然?编辑:非常感谢大家的帮助! 最佳答案 BYTE的定义是:typedefunsignedcharBYTE;这与constchar不同,因此您需要对其进行转换,但请注意丢弃const来自声明的东西const从导致未定义行为的结果开始并尝试实际更改数据会带来更大的风险。BYTE*

c++ - 有效地将 unsigned short 转换为 char*

什么是将unsignedshort转换为char*(即将25转换为'25')的高效、可移植的方法。我想避免涉及(std::string)字符串之类的事情。在这种情况下,性能很重要,因为这种转换需要快速且经常发生。我正在研究诸如使用sprintf之类的事情,但想探索任何和所有想法。 最佳答案 首先,正确地做事,然后快速地做事——只有在您确定某段代码性能不佳时才进行优化。snprintf()放入缓冲区将执行您想要的操作。这是最快的解决方案吗?一点也不。但它是最简单的之一,足以让您的代码进入工作状态。从那里开始,如果您发现对snprint

c++ - 将 char 数组转换为 unsigned char*

有没有办法将char[]转换为unsignedchar*?charbuf[50]="thisisatest";unsignedchar*conbuf=//whatshouldIaddhere 最佳答案 尽管从技术上讲它可能不是100%合法的,但这会起作用reinterpret_cast(buf).这在技术上不是100%合法的原因是第5.2.10节expr.reinterpret.cast项目符号7。Apointertoanobjectcanbeexplicitlyconvertedtoapointertoanobjectofadif

C++:const char * 到 stringstream

是否可以将constchar*放入字符串流中?假设size是我的constchar*变量:stringstreams;s.write(temp,size);如何获取尺寸?谢谢。 最佳答案 我测试了它,它工作正常......#include#includeusingnamespacestd;intmain(){stringstreams;constchar*token="HELLO";s 关于C++:constchar*到stringstream,我们在StackOverflow上找到一个

c++ - 无法将 'LPCWSTR {aka const wchar_t*}' 转换为 'LPCSTR {aka const char*}

我一直在尝试让Glew和opengl3.2在win32上下文中使用代码块(minGW)。我找到了一个不错的小教程here因为我一直在努力弄清楚在代码块中编译glew是否真的可行,所以我想在学习教程之前先试用一下源代码,看看它是否可行。在稍微调整代码后,我尝试编译并遇到了几个我以前从未见过的错误。它们如下|Infunction'boolcreateWindow(LPCWSTR,int,int)':||73|error:cannotconvert'LPCWSTR{akaconstwchar_t*}'to'LPCSTR{akaconstchar*}'inassignment||80|erro