草庐IT

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新

c++ - 如何测量非ASCII字符的正确大小?

在下面的程序中,我试图测量具有非ASCII字符的字符串的长度。但是,我不确定为什么size()在使用非ASCII字符时没有打印出正确的长度。#include#includeintmain(){std::strings1="Hello";std::strings2="इंडिया";//non-ASCIIstringstd::cout输出:SizeofHellois5Sizeofइंडियाis18现场演示Wandbox. 最佳答案 std::string::size返回字节长度,而不是字符数。您的第二个字符串使用UNICODE编码,

读取超过 127 个 ASCII 值时 C++ cin 失败

我创建了一个包含256个字符的文本文件,文本文件的第一个字符是ASCII值0,文本值的最后一个字符是ASCII值255。中间的字符从0到255均匀递增。所以字符#27是ASCII值27。字符#148应该是ASCII值148。我的目标是读取此文本文件的每个字符。我试过用cin阅读这个。我尝试了cin.get()和cin.read(),它们都应该读取未格式化的输入。但是在读取第26个字符时都失败了。我想当我使用unsignedchar时,cin说它正在读取readin255,这根本不是真的。当我使用普通签名的char时,cin表示它正在读取-1。它应该读入与ASCII26等效的任何字符。也

C++ 从字符串中去除非 ASCII 字符

开始之前;是的,我知道这是一个重复的问题,是的,我已经查看了已发布的解决方案。我的问题是我无法让他们工作。boolinvalidChar(charc){return!isprint((unsigned)c);}voidstripUnicode(string&str){str.erase(remove_if(str.begin(),str.end(),invalidChar),str.end());}我在“Prusæus,AEgyptians”上测试了这个方法,但它什么也没做我还尝试用isprint代替isalnum真正的问题发生在我程序的另一部分我转换string->wstring->

c++ - 为什么不能将一个 int(代表一个 ASCII 字符)转换为一个 std::string 而不用花括号包裹 int?

intmain(){std::stringA;A+=(std::string)65;std::cout上面的代码不起作用。它会引发编译器错误。但是下面的代码有效。intmain(){std::stringA;A+=(std::string){65};std::cout当我将65括在大括号中时,它被解释为我想要的ASCIIA,但没有大括号,程序将无法运行。我还尝试将多个数字放在大括号中,如下所示:intmain(){std::stringA;A+=(std::string){65,66};std::cout这将打印出AB。我只希望有人能为我解决这个问题。 最佳

c# - 你如何在 C# 中将字符串转换为 ascii 和二进制?

前阵子(高中一年级)我请一位非常优秀的大三C++程序员制作一个简单的应用程序,将字符串转换为二进制。他给了我以下代码示例:voidToBinary(char*str){char*tempstr;intk=0;tempstr=newchar[90];while(str[k]!='\0'){itoa((int)str[k],tempstr,2);cout所以我想我的问题是如何获得与C#中的itoa函数等效的函数?或者如果没有我怎么能达到同样的效果? 最佳答案 使用C#很容易做到这一点。varstr="Helloworld";WithLI