从命令行运行程序时,C++ 出现错误“failure: locale::facet::_S_create_c_locale name not valid”

2024-02-14

我似乎对 C++ 中的区域设置有问题。当我从 Eclipse 中运行我的程序时,一切正常。但是,当我尝试从命令行运行时,我不断收到此错误:

失败: locale::facet::_S_create_c_locale 名称无效

这是触发错误的代码:

// Set up UTF8 file stream
string fileName = "./sz.txt";
wifstream inFileStream;

try {
    setlocale(LC_ALL, "");
    inFileStream.open(fileName.c_str());
    inFileStream.imbue(locale(""));
    if(!inFileStream) {
    return EXIT_FAILURE;
    }
}
catch (const std::exception &exc) {
    wcout << "Error while trying to create UTF8 file stream." << endl;
    std::cerr << exc.what() << endl;
    if( inFileStream.is_open() )
        inFileStream.close();

    return EXIT_FAILURE;
}

“locale”的输出如下:

LANG="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_CTYPE="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_ALL="de_DE.UTF-8"

我还尝试使用“de_DE.UTF-8”作为区域设置字符串而不是“”(实际上应该是这样),但这给了我同样的错误。

奇怪的是,该程序在 Eclipse 中运行时运行良好。我正在使用 g++ 从命令行编译以下版本:

配置为: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Apple LLVM 版本 5.0 (clang-500.2.79)(基于 LLVM 3.3svn) 目标:x86_64-apple-darwin12.4.0 线程模型:posix

知道这里可能出了什么问题吗?

Cheers,

Martin


失败: locale::facet::_S_create_c_locale 名称无效

这种失败在非 GNU 平台上很常见,其中 GCC 没有足够好的语言环境支持。请参阅手册和--enable-clocale http://gcc.gnu.org/onlinedocs/libstdc++/manual/configure.htmllibstdc++ 选项描述如下:

选择特定于目标的底层语言环境包。选择“ieee_1003.1-2001”指定基于 langinfo/iconv/catgets 的 X/Open、标准 Unix (IEEE Std. 1003.1-2001) 模型,“gnu”指定基于 GNU C 功能的模型库(langinfo / iconv / gettext)(来自glibc,GNU C库),“generic”使用由“C”语言环境信息组成的通用“C”抽象,“newlib”指定Newlib C库模型,该模型仅与“通用”模型的不同之处在于 ctype 或“darwin”的处理,它省略了“通用”模型所需的 wchar_t 专业化。

如果没有明确指定,配置过程会尝试从上面的选择中猜测最合适的包。默认值为“通用”。在足够成熟的基于 glibc 的系统(2.3 及更新版本)上,会自动选择“gnu”。在基于 newlib 的系统 ('--with_newlib=yes') 和 OpenBSD 上,会自动选择 'newlib'。在 Mac OS X 上,会自动选择“darwin”。此选项可以更改库 ABI。

如果您查看 libstdc++ 库的源代码,您会发现除了“gnu”模型之外,所有其他模型几乎都是仅支持“C”语言环境的存根。某些平台根本没有线程安全区域设置支持。其他平台,例如 Darwin(据我所知,我不拥有或无法访问 MacOS X Darwin),确实提供了足够的线程安全区域设置 API(xlocale https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/xlocale.3.html)这应该可以在 libstdc++ 中实现完整的 C++ 语言环境支持。不幸的是,目前还没有人做到这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从命令行运行程序时,C++ 出现错误“failure: locale::facet::_S_create_c_locale name not valid” 的相关文章

  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 在没有布局管理器的情况下将 JScrollPane 添加到 JPanel

    在开始之前 我知道不使用布局管理器是一个坏主意 通常我确实使用布局管理器 但是 我还让所有组件根据窗口的大小自动重新调整大小和重新定位 此外 我正在开发的程序在其整个生命周期中仅打算在一台机器上运行 请不要仅仅因为缺少布局管理器而对我投反对
  • 将项目数组拆分为 N 个数组

    我想将数字数组分成N组 必须从larger to smaller groups 例如 在下面的代码中 分割一个数组12数入5数组 结果应该从大 组 到小均匀分割 source 1 2 3 4 5 6 7 8 9 10 11 12 outpu
  • C/C++ 大数计算

    我正在尝试在 C 程序中计算以下数字 result 3 pow 2 500000000 2 1000000000 2 的幂太大 无法正确处理 gt 我的印象是 我可以使用模数将计算分成多个步骤 以减少结果大小 有人有这样做的策略吗 还有其他
  • 将 WP 8.0 应用程序定位到 WP8.1 应用程序?

    我安装了 Visual Studio 2013 含更新 2 我正在 VS2012 中为 Windows Phone 8 0 开发我的项目 现在我决定Upgrade它到 Windows Phone 8 1 应用程序 所以我按照说明进行操作Ta
  • 选择选项卡时更改 div 高度

    我有一个选项卡式内容 有 4 个选项卡 每个选项卡中都有两个 div 构成边框设计 我遇到的问题是 当选择它们所在的选项卡时 我不知道如何对 div 进行动画处理以更改高度 我有一个小提琴供参考 http jsfiddle net jw6t
  • 如何将 CGRect 的大小增加一定的百分比值?

    如何将 CGRect 的大小增加一定的百分比值 我应该使用某种形式的CGRectInset去做吧 Example 假设我有一个 CGRect 10 10 110 110 我想将其大小增加 20 保留相同的中心点 0 0 120 120 您可
  • Android Preview M:授予权限后重新创建活动

    我使用 Preview M 并在其上测试我的应用程序 尤其是 将文件保存到外部存储 部分 在下载 保存过程开始之前 我请求 Manifest permission WRITE EXTERNAL STORAGE 开发者页面上描述的权限 htt
  • 从 Maven 部署到 Nexus 出现错误:ReasonPhrase:Forbidden

    http numberformat wordpress com 2011 05 18 nexus repository http numberformat wordpress com 2011 05 18 nexus repository
  • NetworkStream.Write 与 Socket.Send

    我有一个 C 应用程序 我使用自定义 FTP 库 现在我使用 Socket Send 发送数据 但我想知道使用套接字启动 NetworkStream 并使用 NetworkStream Write 是否会更好 使用其中一种比另一种有什么优势
  • Haskell 中的 HTTP POST 内容

    我正在尝试将一些数据发布到 Haskell 中的服务器 但服务器端为空 我正在使用 Network HTTP 库来处理请求 module Main main where import Network URI URI parseURI uri
  • Postgres `gin_trgm_ops` 索引未被使用

    我试图speed up https stackoverflow com questions 56483600 composite jsonb array query in postgresPostgres 中的一些文本匹配 使用pg trg
  • 如何在 dask/distributed 中存储工作线程局部变量

    使用dask 0 15 0 分布式1 17 1 我想记住每个工作人员的一些事情 比如访问谷歌云存储的客户端 因为实例化它是昂贵的 我宁愿将其存储在某种工作者属性中 执行此操作的规范方法是什么 或者全局变量是正确的选择吗 关于工人 您可以通过
  • jquery ajax 调用不起作用?!是firefox还是xss问题?

    我的问题是 在 Firefox 中我没有得到任何回应 在 ie 中它工作得很好 我想要对本地脚本进行 ajax 调用 以纯文本或其他方式获取一些信息 但这行不通 我认为跨脚本此时应该不是问题 或者 JavaScript 代码很简单 var
  • 如何在程序开始执行时设置断点

    如何在加载任何链接的 DLL 之前停止程序 我尝试过设置LoadLibraryExW函数在Break At Function调试选项 它会在该函数处停止 但在此之前 我在 Visual Studio 输出窗口中有以下内容 test exe
  • Sequelize - 通过匹配所有标签来过滤 FindAll

    assets tags foo tags bar 对上述端点的获取请求应仅返回包含所有提供的标签的记录 foo bar 我当前的尝试是返回与任何给定标签匹配的任何记录 const tags req query res send await
  • Angular 10 中主组件内的延迟加载模块

    我的应用程序中有两个模块 其中一个是app module另一个是user module这会被延迟加载 上app module我有一个sign in成分 sign up组件和main成分 这main component是由导航栏和侧边栏组成的
  • 设置回调数组并尝试使用数组索引作为回调中的值

    当我以这种方式设置回调数组时 我在所有回调的对话框窗口中得到 20 我想获取数组中的索引 这可能吗 调用回调的函数期望回调有一个参数 我不控制回调的调用者 因为它是外部库的一部分 任何帮助表示赞赏 for var i 0 i lt 20 i
  • 使用 CreateDesktop/SwitchDesktop 在新桌面中创建表单

    我需要为一个实用程序创建一个系统模式形式 该实用程序应该阻止整个窗口 直到输入某些值 所以我正在尝试创建桌面和切换 到目前为止 创建一个切换到它的桌面 然后返回对我来说效果很好 But 当我尝试从新线程中创建表单时 该表单不会显示 但应用程
  • NSwag - 如何添加评论?

    我在 ASP Net WebAPI 项目中使用 NSwag 来生成 swagger 界面 效果很好 假设我有一个方法想要添加一些解释 我该怎么做 我所说的注释是指当 API 用户查看文档时会看到的内容 我用谷歌搜索过 狂饮过 然后 躲开了
  • 从命令行运行程序时,C++ 出现错误“failure: locale::facet::_S_create_c_locale name not valid”

    我似乎对 C 中的区域设置有问题 当我从 Eclipse 中运行我的程序时 一切正常 但是 当我尝试从命令行运行时 我不断收到此错误 失败 locale facet S create c locale 名称无效 这是触发错误的代码 Set