草庐IT

utf_unicode_ci

全部标签

c++ - 如何在 C++ 正则表达式中使用 Unicode 范围

我必须在C++的正则表达式中使用unicode范围。基本上我需要的是有一个正则表达式来接受所有有效的unicode字符。我只是尝试使用测试表达式并遇到一些问题。std::regexreg("^[\\u0080-\\uDB7Fa-z0-9!#$%&'*+/=?^_`{|}~-]+$");问题出在\\u上吗? 最佳答案 这应该可以正常工作,但您需要使用std::wregex和std::wsmatch。您需要将源字符串和正则表达式转换为宽字符unicode(Linux上为UTF-32,Windows上为UTF-16(ish))以使其工作。

c++ - std::string 和 UTF-8 编码的 unicode

如果我理解的很好,可以同时使用string和wstring来存储UTF-8文本。对于char,ASCII字符占用一个字节,一些中文字符占用3或4个字节,等等。这意味着str[3]不一定指向第4个字符。与wchar_t相同,但每个字符使用的最小字节数始终为2(而不是char的1),以及3或4字节宽的字符将占用2个wchar_t。对吗?那么,如果我想对这样一个奇怪编码的字符串使用string::find_first_of()或string::compare()等怎么办?它会工作吗?字符串类是否处理字符具有可变大小的事实?或者我应该只将它们用作虚拟的无特征字节数组,在这种情况下我宁愿选择wc

c++ - 转换为 Unicode 时提升属性树问题

好的,首先我不是天生的C++开发人员;我已经设法将一些东西放在一起并且工作正常,但我确信从专家的角度来看它看起来像垃圾=)所以我制作了一个免费软件应用程序,它使用来自Boost库的PropertyTree。我使用“使用多字节字符集”设置开发了整个应用程序(在VS2010中)。我决定是时候检查并更新应用程序以支持Unicode,因为我希望更好地支持一些具有复杂字符集的人。我经历了将所有引用和调用更改为使用宽字符串的繁琐过程,以及所有必要的转换。但是,有一点我完全被难住了,我只剩下两个编译器错误。它们都来自stream_translator.hpp(/boost/property_tree

c++ - Boost Spirit (X3) 符号表生成 UTF8 字符串

我正在尝试将LaTeX转义码(例如\alpha)解析为Unicode(数学)字符(即U+1D6FC)。现在这意味着我正在使用这个symbols解析器(规则):structgreek_lower_case_letters_:x3::symbols{greek_lower_case_letters_::greek_lower_case_letters_(){add("alpha",U'\u03B1');}}greek_lower_case_letter;这工作正常但意味着我得到一个std::u32string作为结果。我想要一种优雅的方式来将Unicode代码点保留在代码中(可能用于将来的

c++ - C++0x 中没有 Unicode 流?为什么?

今天我发现,C++标准委员会在第二个修订版中取消了C++0x中的Unicode流支持。有关详细信息,请参阅this问题。根据this文档:Therationaleforleavingoutstreamspecializationsofthetwonewtypeswasthatstreamsofnon-chartypeshavenotattractedwideusage,soitisnotclearthatthereisarealneedfordoublingthenumberofspecializationsofthisverycomplicatedmachinery.来自this采访

c++ - FreeType 中的 Unicode 问题

所以,我有一个解析xml的实现,其中包括维基百科主页的位置和字符串。解析是用rapidxml完成的,之后由http://utfcpp.sourceforge.net/将字符串从UTF-8转换为UTF-32。.然后在freetype中使用UTF-32代码:unsignedlongc=FT_Get_Char_Index(face,*p);FT_Load_Glyph(face,c,FT_LOAD_RENDER);其中*p是UTF-32字符代码。然后在OpenGL中呈现此字形。现在,我似乎无法使用cryllic字符,也无法使用任何中文、日文或越南文,我确信*p对应于正确的代码,如果能得到任何指

c++ - 在 C++ 中确定一个 unicode 字符是全角还是半角

我正在编写一个应该包装任意unicode文本的终端(控制台)应用程序。终端通常使用等宽(固定宽度)字体,因此要包装文本,只不过是计算字符数并观察单词是否适合一行并采取相应行动。问题是Unicode表中的全角字符占用了终端中2个字符的宽度。计算这些会看到1个unicode字符,但打印的字符是2个“正常”(半角)字符宽,打破了包装例程,因为它不知道占用两倍宽度的字符。例如,这是一个全角字符(U+3004,JIS符号)〄12虽然它是预格式化的,但它在这里不占用2个字符的全部宽度,但它确实在终端中使用了西方字符宽度的两倍。为了处理这个问题,我必须区分全角字符或半角字符,但我找不到在C++中这样

c++ - 不允许 clang 变量名中的 Unicode/特殊字符?

Thisquestionhasunicodetextthatmaynotdisplaycorrectlyinallbrowsers.clang现在(>3.3)在变量名中支持unicode字符http://llvm.org/releases/3.3/tools/clang/docs/ReleaseNotes.html#major-new-features.但是一些特殊字符仍然被禁止。intmain(){doubleα=2.;//alpha,ok!double∞=99999.;//infinity,error}给予:error:non-ASCIIcharactersarenotallowe

c++ - 判断当前字体是否支持 unicode 字符的简便方法?

我使用的是BorlandC++Builder2009,我会像这样显示左右箭头:Button2->Hint=L"Ctrl+\u2190";Button3->Hint=L"Ctrl+\u2192";这在Windows7上运行良好,应用程序使用字体“SegoeUI”。在XP上我得到一个正方形而不是箭头,我在XP上使用字体“Tahoma”。换句话说,提到的Unicode字符在XP上的Tahoma中不存在。有没有简单快捷的方法来检查当前使用的字体是否支持所请求的Unicode字符?例如,如果是这样,我可以将箭头替换为“>”或“感谢您的帮助。 最佳答案

GitLab CI/CD 自动化部署全流程

CI/CD简介CI/CD是一种持续开发软件的方法,侧重于软件开发过程中的自动化,可以不断地进行构建、测试和部署代码。使用这种方法,从新代码开发到部署,可以减少人工干预甚至不用干预CI(ContinuousIntegration):持续集成,也就是当每一次更改的代码被推送到远程分支后,可以创建一组脚本来自动地构建和测试这些更改,确保这些更改可以通过一些基本的准则,减少引入错误的机会CD:(ContinuousDelivery):持续交付,在持续集成的基础上更进一步,当每一次更改的代码落库后,不仅会构建和测试,也会进行部署,但是部署需要人工干预,手动的有目的进行部署(ContinuousDeplo