草庐IT

non-unicode

全部标签

c++ - 将 Python 3 Unicode 转换为 std::string 的简洁方法

我使用Python2API封装了很多C++(由于各种技术原因,我不能使用swig或boost.python之类的东西)。当我必须将一个字符串(通常是一个路径,总是ASCII)传递给C/C++时,我使用这样的东西:std::stringfile_name=PyString_AsString(py_file_name);if(PyErr_Occurred())returnNULL;现在我正在考虑更新到Python3,其中PyString_*方法不存在。我找到了onesolution那说我应该做这样的事情:PyObject*bytes=PyUnicode_AsUTF8String(py_fi

c++ - 从 C++ 中的 unicode 字符串检测语言环境

我有一个字符串,我想检查内容是英语还是印地语(我的本地语言)。我发现印地文字符的unicode范围是从U0900-U097F。查找字符串是否包含此范围内的任何字符的最简单方法是什么?我可以根据方便使用std::string或Glib::ustring。 最佳答案 这里是你如何用Glib::ustring做到这一点:usingGlib::ustring;ustringx("सहस");//hindistringboolis_hindi=false;for(ustring::iteratori=x.begin();i!=x.end();

c++ - "enumeral and non-enumeral type in conditional expression"背后的推理

自C++11过渡以来,GCC输出警告“条件表达式中的枚举和非枚举类型”。我想了解此警告背后的原因。比较枚举常量有什么危险?很明显我们可以通过以下方式摆脱这个警告-Wno-enum-compare通过显式转换为整数类型但为什么这么麻烦?就个人而言,我一直努力编写无警告代码,通常默认发出的警告是非常合理的。例如,它认为比较有符号和无符号整数是危险的。但是使用枚举是广泛使用的惯用C++元编程。我不知道有任何替代方案,它同样具有可读性、简明扼要且不需要任何实际存储空间。举一个具体的例子:下面的元函数会出现什么问题,以至于警告就足够了?templatestructMaxSize;template

c++ - GCC、Unicode 和 __FUNCTION__

我正在尝试让我的项目在GCC下编译(VisualStudio可以完美地编译它)。我有一个自定义断言函数,它会抛出一条wstring消息。它的一部分是__FUNCTION__宏,我使用MSDN中的WIDEN宏将其“统一编码”#defineWIDEN2(x)L##x#defineWIDEN(x)WIDEN2(x)它在MSVC中编译正常,但在GCC中打印如下:error:‘L__FUNCTION__’wasnotdeclaredinthisscope我能想到的唯一解决方案是在运行时使用mbstowcs将__FUNCTION__的内容转换为wstring,但我想找到一种编译时方法来完成它。感谢

c++ - 如何使用 C++ (keybd_event) 发送 unicode 键

我的friend正在学习挪威语,我想制作一个全局热键程序来发送诸如æøå我的问题是keybd_event函数不允许我发送那些key,我似乎仅限于virtualkeycodes我可以使用其他功能或一些技巧来发送它们吗? 最佳答案 您必须改用SendInput。keybd_event不支持发送此类字符(除非它们已经在当前代码页中,例如在挪威计算机上)。发送å的一些示例代码:KEYBDINPUTkb={0};INPUTInput={0};//downkb.wScan=0x00c5;kb.dwFlags=KEYEVENTF_UNICODE;

c++ - 在 C++ win32 控制台应用程序中输出 unicode 符号 π 和 ≈

我对编程相当陌生,但似乎π(pi)符号不在ASCII处理的标准输出集中。我想知道有没有什么办法可以让控制台输出π符号,从而表达对某些数学公式的准确答案。 最佳答案 我不太确定是否有任何其他方法(例如那些使用STL的方法),但您可以使用WriteConsoleW在Win32中执行此操作:HANDLEhConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);LPCWSTRlpPiString=L"\u03C0";DWORDdwNumberOfCharsWritten;WriteConsoleW(hCo

c++ - 如何用FLTK显示Unicode?

根据FLTK1.3.2documentation:UnicodesupportwasonlyrecentlyaddedtoFLTKandisstillincomplete.但是,据推测实现了以下内容:ItisimportanttonotethattheinitialimplementationofUnicodeandUTF-8inFLTKinvolvesthreeimportantareas:provisionofUnicodecharactertablesandsomesimplerelatedfunctionsconversionofchar*variablesandfunctio

如何检查角色是否是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++ - std::string 与 unicode 的奇怪行为

我有以下代码:#includestd::stringeps("ε");intmain(){std::cout它以某种方式在Ubuntu上用g++和clang编译,甚至打印出正确的字符ε。我也有几乎相同的一段代码,它愉快地将ε和cin读入std::string。顺便说一下,eps.size()是2。我的问题是-它是如何运作的?我们如何将unicode字符插入到std::string中?我的猜测是操作系统使用unicode处理所有这些工作,但我不确定。编辑对于输出,我知道是终端负责向我显示正确的字符(在本例中为ε)。但是对于输入:cin将符号读取为''或任何其他空格字符(据我所知,逐字节)

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))以使其工作。