草庐IT

ensure_ascii

全部标签

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 的加密 (ascii)

这是一个简单的代码,但我无法理解一个奇怪的事件。代码:voidCrittografia::CifraTesto(chartext[]){inti;for(i=0;i'z'){text[i]=text[i]-26;}}}函数接收此处输入的字符串:Itworks.在这种情况下,它使用key5。“y”在“d”中正确更改。但在这种情况下:Doesn'twork.键值为7时,它会更改'Ç'中的'y'而不是正确的'f',因此显然不会执行该行:“text[i]=text[i]-26;” 最佳答案 text[i]=text[i]+key;当key为

Cassandra:差异B/W文本(VARCHAR)和ASCII

我知道文本和varchar是别叠,它们存储了UTF-8字符串。ASCII呢?除了编码之外,还有什么区别?有尺寸差异吗?当我存储大字符串(〜500kb)时,这两个之间的首选选择是什么?看答案关于这个:如果数据是一段文本,例如Java中的字符串,该字符串在运行时在UTF-16中编码,但是当在Cassandra中使用文本类型序列化时,则使用UTF-8。UTF-16始终每个字符使用2个字节,有时会使用4个字节,但是UTF-8是有效的,并且取决于字符可以长1、2、3或4个字节。这意味着有CPU工作可以序列化此类数据以编码/解码目的。还取决于文本,例如158786464563,数据将以12个字节存储。这意

c++ - 从 ASCII 到 Unicode 字符代码的转换 (FreeType2)

我在我的一个项目中使用FreeType2。为了呈现一封信,我需要提供一个Unicode两字节字符代码。不过,程序读取的字符代码是ASCII单字节格式。128以下的字符码没有问题(字符码相同),但其他128个不匹配。例如:ASCII中的“a”是0x61,Unicode中的“a”是0x0061-没问题ASCII中的“±”是0xB9,Unicode中的“±”是0x0105——完全不同我试图在那里使用WinAPI函数,但我一定是做错了什么。这是一个示例:unsignedcharszTest1[]="ąółź";//ASCIIformatwchar_t*wszTest2;intsize=Mult

c++ - 为什么在使用 "C"语言环境时 printf 可以显示非 ASCII 字符?

注意:我问的是MicrosoftVisualC++2008上的实现定义行为(在2005+上可能相同)。操作系统:Win7简体中文安装。当我使用printf执行非ASCIII/O时,我感到很惊讶。例如//Thiswon'tbenecessaryasit'sthesystemdefaultcodepage.//system("chcp936");//NULLtoshowcurrentlocale,whichis"C"printf("%s\n",setlocale(LC_ALL,NULL));printf("中\n");printf("%s\n",setlocale(LC_ALL,"Engl

c++ - 使用 ICU 库的 UTF-8 到 ASCII

我有一个带有UTF-8字符的std::string。我想将字符串转换为最接近的ASCII字符。例如:罗兹=>罗兹Assunção=>Assuncao施洛斯=>施洛斯不幸的是,ICU库真的很不直观,而且我还没有找到关于它的用法的好文档,所以我要花太多时间来学习使用它。我没有时间。有人可以举例说明如何做到这一点吗?谢谢。 最佳答案 试试这个,ucnv_convert("US-ASCII","UTF-8",targer,targetsize,source,sourcesize,pError)

c++ - 如何在 C++ 中读取一个字节并将字节的 ASCII 值保存为整数

我有一个让我困惑的简单问题。目标:我想从文件中读取给定的字节(比如第一个字节)并使用该字节的ASCII值生成intx。因此,例如,如果字节/字符是“a”,我希望x为97(=十六进制的61)。我读取文件example.txt的第一个字节如下:#include#include#includeusingnamespacestd;intmain(){unsignedintx;unsignedcharb;ifstreammyFile("example.txt",ios::out|ios::binary);myFile.seekg(0,ios::beg);myFile>>b;x=(unsigned

c++ - 一些随机的 C 问题(ascii 魔法和位运算符)

我正在尝试学习C编程,我正在研究一些源代码,但有些东西我不明白,尤其是关于位运算符。我阅读了一些关于此的网站,我对它们的作用有了一些了解,但是当我回头查看这些代码时,我无法理解它们使用的原因和方式。我的第一个问题与按位运算符无关,而是一些ascii魔术:谁能给我解释一下下面的代码是如何工作的?chara=3;intx=a-'0';我知道这样做是为了将char转换为int,但我不明白其背后的逻辑。为什么/如何运作?现在,关于按位运算符,我真的迷失在这里。这段代码是做什么的?if(~pointer->intX&(1我在某处读到~反转位,但我看不出这条语句在做什么以及为什么要这样做。与此行相

c++ - 如何在 ASCII 艺术中匹配 ASCII 艺术片段?

我正在为一个编程竞赛练习,在这个竞赛中我可以选择使用Python还是C++来解决每个问题,所以我愿意接受任何一种语言的解决方案——无论哪种语言最适合这个问题。我遇到的过去问题的URL是http://progconz.elena.aut.ac.nz/attachments/article/74/10%20points%20Problem%20Set%202012.pdf,问题F(“map”)。基本上,它涉及在一个大的ASCII艺术中匹配一小段ASCII艺术的出现。在C++中,我可以为每一幅ASCII艺术作品制作一个vector。问题是当小块是多行时如何匹配。我不知道该怎么做。我不希望所有

如何检查角色是否是Rust中的Unicode New-Line字符(不仅是ASCII)?

每种编程语言都有自己的解释\n和\r。Unicode支持多个字符能够代表一条新线。从生锈的参考:空格逃脱是u+006e(n),u+0072(r)或u+0074(t)的字符之一,表示Unicode值U+000A(LF),U+000D(CR)或U+0009(HT)。基于该陈述,我会说如果它是一个新线角色,则是一个新的字符\n或者\r。在窗户上可能是\r和\n。我不确定。那以下呢?下一行字符(u+0085)线分离器字符(U+2028)段落分隔符(U+2029)我认为,我们缺少像char.is_new_line()。我看了看Unicode字符类别但找不到新线的定义。我是否必须提出自己对Unicode新