- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在解决此问题之前,在 Mac Os X 10.6.8 上我无法使用标准库中的 wchar_t 函数编译代码。
wcscoll 函数以及其他一些函数:
inttypes.h:#pragma GCC poison wcstoimax wcstoumax stdlib.h:#pragma GCC poison mbstowcs mbtowc wcstombs wctomb wchar.h:#pragma GCC poison fgetws fputwc fputws fwprintf fwscanf mbrtowc mbsnrtowcs >mbsrtowcs putwc putwchar swprintf swscanf vfwprintf vfwscanf vswprintf vswscanf vwprintf >vwscanf wcrtomb wcscat wcschr wcscmp wcscoll wcscpy wcscspn wcsftime wcsftime wcslcat >wcslcpy wcslen wcsncat wcsncmp wcsncpy wcsnrtombs wcspbrk wcsrchr wcsrtombs wcsspn wcsstr >wcstod wcstof wcstok wcstol wcstold wcstoll wcstoul wcstoull wcswidth wcsxfrm wcwidth >wmemchr wmemcmp wmemcpy wmemmove wmemset wprintf wscanf
#include <stdio.h>
#include <wchar.h>
#include <string.h>
#include <locale.h>
#include <stdlib.h>
extern int errno;
int main(void)
{
wchar_t pwcs1[3]={L"ØL"}, pwcs2[3]={L"Ål"};
size_t n;
(void)setlocale(LC_ALL, "");
/* set it to zero for checking errors on wcscoll */
errno = 0;
/*
** Let pwcs1 and pwcs2 be two wide character strings to
** compare.
*/
/* n = wcscmp(pwcs1, pwcs2); */
n = wcscoll(pwcs1, pwcs2);
/*
** If errno is set then it indicates some
** collation error.
*/
if (n < 0 ) {
printf("%s\n","Øl mindre en Ål" );
} else if (n == 0) {
printf("%s\n","Øl lik Ål" );
} else {
printf("%s\n","Øl større en Ål" );
}
if(errno != 0){
/* error has occurred... handle error ...*/
}
}
我该如何解决这个问题?我有点不愿意乱用标准库。但我想我也许可以编译 GNU C 库,如果 Apple 没有修复它的话?或者在处理宽字符(Utf-8)的库中是否有任何其他合适的替代方法。
我正在移植一些古老的东西,所以我真的需要使用 ncurses,为了使用 ncurses,我需要宽字符! :)
编辑:据我所知,标准的 includepath 应该是/usr/include。我已经浏览了我拥有的 SDK 的包含目录,并且通过头文件的 grep 显示了相同的毒杂注,来自 http://opensource.apple.com/tarballs/Libc/ 的最新 tarball 也是如此。
编辑++
事后看来,这些编译指示存在是有原因的,我正在寻找替代方案,所以现在,我正在尝试构建 glibc,刚刚下载,并且我已经检查了没有任何“GCC 毒药”编译指示的 header .
稍微阅读了一下 glibc 的配置文件,我想这不是一个简单的选择。我想我必须剖析一些与 utf-8 一起工作并在 mac osX 上使用 ncurses 的东西来弄清楚如何。
可能是我忽略了一个简单的解决方案。但是 ncurses 退回到 7 位 ascii,这是我的问题。我的目标是在使用 ncurses 时呈现 utf-8 语言特定字符。我需要能够排序,因为格式是带有索引的“专有”格式, fork 系统调用来对记录进行排序是没有选择的。我还需要能够知道某种字符串中有多少个代码点,以便使用 ncurses 进行字段编辑、插入和删除显示中的字符。
谢谢!
最佳答案
到目前为止,ICU 库看起来很有前途:我想我会寻求 ICU 库的解决方案,据我所知,它随 Mac Os X 一起提供。http://icu-project.org/apiref/icu4c/
关于c - wcscoll 函数被标记为中毒,我该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14333295/
考虑这段代码: #include #include #include int main(void) { setlocale(LC_ALL, "pl_PL.UTF-8"); pri
在解决此问题之前,在 Mac Os X 10.6.8 上我无法使用标准库中的 wchar_t 函数编译代码。 wcscoll 函数以及其他一些函数: inttypes.h:#pragma GCC po
对于 wcscmp() 和 wcscoll() 是宽字符比较。 什么是差异? 最佳答案 wcscoll将根据 LC_COLLATE 适本地解释参数当前语言环境的类别。 如果本地不是问题,wcscmp应
我是一名优秀的程序员,十分优秀!