- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
给定以下代码:
#include <iostream>
#include <cwctype>
#include <clocale>
int main()
{
wchar_t c = L'\u00ff'; // ÿ LATIN SMALL LETTER Y WITH DIAERESIS
// → 0178 Ÿ latin capital letter y with diaeresis
std::cout << std::hex << std::showbase;
#ifdef WIN32
const char * lcc = setlocale(LC_ALL, "English");
#else
const char * lcc = std::setlocale(LC_ALL, "en_US.cp1252");
#endif
if(lcc) {
std::cout << "set locale: " << lcc << std::endl;
std::cout << "towupper(" << (std::wint_t)c << ") = " << towupper(c) << '\n';
} else {
std::cout << "failed to set locale" << std::endl;
}
}
如果我在 Visual Studio 2010(也是 2013)中编译并运行它,结果是:
set locale: English_United States.1252
towupper(0xff) = 0x9f
在带有 gcc 的 Linux 上:
set locale: en_US.cp1252
towupper(0xff) = 0x178
towupper 的结果在两个平台上是不同的,linux/gcc 给出的答案对我来说似乎是正确的,因为 0x178 (Ÿ) 是 0xff (ÿ) 的正确大写 Unicode 代码点。
但是,0x9f 也是 Ÿ 的代码点,但在使用的 Windows-1252 代码页中。所以看起来 Visual C 的 towupper 会将输入视为窄字符,并根据预设代码页对其进行解释。
根据我的理解,宽字符应始终被解释为 Unicode 代码点,在 Windows/VC 上为 UTF-16,在 Linux/gcc 上为 UTF-32。我在这里错了,还是它真的是 Microsoft 实现中的错误?还是在这种情况下只是规范不够严格,两者都可以被视为正确的结果?
最佳答案
从问题的评论来看,似乎没有“真正”的解决方案; C 或 C++ 标准在字符编码方面不够严格,因此我们不能对区域设置敏感的结果抱有真正的期望。
对于我在 Windows 上的特定用例,CharUpperW 被证明是一个可行的选择,尽管它依赖于平台。
关于c++ - 视觉 C++ : buggy towupper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21721884/
我在 Processing 中制作碰撞球草图时,遇到了一个奇怪的错误。尽管有从墙壁弹回的条件,一些球还是会粘在上面。我在这里找不到错误的来源。有人可以帮忙吗?我也意识到可能很少(很多)错误的编码实践,
我有一个函数: def greeter(name, greeting, punc): print greeting+', '+name+punc 我有一个带参数的字典: params={'na
我真的不擅长解释,但这是悬停时的 gif 动图: 我只需要在鼠标悬停时箭头从左侧发出(不像 gif 中那样)。当您查看 gif 时,您就会明白我的意思。 这是我的 CSS: .nav-backgrou
当我将文本阴影与文本笔划结合使用时,我遇到了网络编程问题。同一文本的阴影版本在两侧被剪切,这不是我期望的。有谁知道如何在以这些速率同时使用阴影和描边的同时避免这个问题? 我实际上可以看到,在 Safa
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我的存储库出现了最疯狂的错误,我不知道该怎么办。在我的 repo 协议(protocol)中,我有三个分支。 master > branch_1 > branch_2 来自 branch_1 git
我有一个使用2D蓝牙扫描仪扫描条形码的应用程序。该应用程序已投入生产,并且运行良好,现在有了Flutter的最新SDK更新,一旦打开软/虚拟键盘,我用来监听扫描仪输入的RawKeyboardListe
我正在使用 Beginning Android Games 中的游戏引擎并从头开始制作突破游戏。我的 Racket /球/积木可以正常工作,但现在我正在解决错误。随机地,我的乒乓球会撞到任何墙壁,它会
我有一些正在解析的图像。 (5 个对象每个都有一个 PFFile,每个图像大约 800x800 400Kb)。当我第一次在我的设备 (iphone 5S) 上运行该应用程序时,图像加载,一切正常。当我
我有一个奇怪的问题,它可能比其他任何问题都更糟糕的编码。 基本上,I have this site如果您将浏览器的大小调整为网站的大小,您会看到可以向右滚动。这是因为我有一个 与 position:
我有一个 div,单击它会在右侧滑入,但如果它尚未打开或打开,我也试图让它在滚动时滑入。因此,您可以单击按钮使其滑入,或者如果在您向下滚动页面时将其关闭,它会打开,然后在几秒钟后消失,或者如果单击按钮
编辑 - 测试这个的确切最小代码是在我下面的原始帖子中,但它是两个 block 。抱歉,这里是一体的。注释掉 main 中的实例化然后一次取消对它们的注释显示了我在这篇文章中描述的行为。 templa
我有一个 ListView,我在一个单独的 XML 文件中定义了每个项目的布局。在这个文件中,我包含了一个 RatingBar 和一个 EditText。 我在这个 ListView 中以编程方式创建
我有一个问题,有人引入了一个错误,但是我不知道引入此错误的Subversion提交。我正在寻找类似svn的漂亮git功能bisect。 有谁知道脚本例如python模拟此功能? 最佳答案 svn 而不
我正在尝试在圆周围排列点。但我得到了错误的结果。某些 Angular (顶部和底部)未正确定位。会出现什么问题? 如何解决这个问题? $(function(){ var globe = $('
我有 3 个 div(#col1、#col2 和 #col3),其中包含包含在 span 标记中的关键字。当用户单击关键字/范围时,它会从 #col1 或 #col2 移出并移至 #col3。然后,当
我曾经将我的程序作为小程序运行,当时它工作得很好,但我决定尝试让它在 JFrame 中运行。我最近遇到了覆盖问题,但我想我终于解决了这个问题。这是我最近一直在制作的一款游戏,它基本上是《Flappy
所以我在工作中已经使用了几个月的 NetBeans。还有一些非常严重的错误,我简直不敢相信大多数人的版本中都存在这些错误。 我的产品版本:NetBeans IDE 7.0.1(内部版本 2011072
最近,我再次注意到 CodeIgniter 的 ActiveRecord 库中存在一个令人难以置信的逻辑错误。 当我尝试在联接中使用“AND”时出现问题。 示例查询: $this -> db -> j
不幸的是,我无法在 jsfiddle 中重现它……无论如何,这是我的代码:http://jsfiddle.net/nZePr/ 基本上,当您将鼠标悬停在工具提示上时,它会留下一个非常微弱的幻影,其不透
我是一名优秀的程序员,十分优秀!