c++ - 将语言环境更改为瑞典语
问题描述
我在 C++ 程序中使用 setlocale 时遇到了困难。我有一个 ftDateTime 类型的字段,我要输入的数据是固定格式的。
当我手动将 Windows 设置中的区域设置更改为适合数据的区域时,程序运行良好。当我尝试使用代码更改语言环境时,它会引发日期和时间格式无效的异常。
void* ptr = setlocale(LC_ALL,"Swedish_Sweden");
数据是一些不相关数据之前的日期和时间。瑞典语格式首先匹配传入的数据。一项是:
2018-07-23 10:40:30
解决方案
这段代码对我有用:
#include <cstdio>
#include <clocale>
#include <ctime>
#include <cwchar>
int main()
{
std::setlocale(LC_ALL, "sv_SE.UTF-8");
wchar_t str[100];
std::time_t t = std::time(NULL);
std::wcsftime(str, 100, L"%A %c", std::localtime(&t));
std::wprintf(L"Number: %.2f\nDate: %Ls\n", 3.14, str);
}
输出:
Number: 3,14
Date: måndag mån 23 jul 2018 12:58:16
要了解系统上的语言环境的外观,请执行以下操作:
#include <iostream>
#include <clocale>
int main()
{
std::setlocale(LC_ALL, "");
std::cout << "LC_ALL: " << std::setlocale(LC_ALL, NULL) << std::endl;
std::cout << "LC_CTYPE: " << std::setlocale(LC_CTYPE, NULL) << std::endl;
return 0;
}
推荐阅读
- c# - 实体框架附加/更新混淆 (EF Core)
- java - 如何从 ServletRequest 而不是 HTTPServletRequest 获取 IP 地址?
- python - urllib.request.Request 超时参数错误
- katalon-studio - 获取 Katalon 的 ul TestObject 中包含的元素列表
- list - Trello API:从卡片中检索列表名称
- powershell - 用于 IOS 配置的正则表达式以打印父子部分
- mvvm - 如何使用 mvvmcross 从 xamarin android 中的 IMvxAndroidViewPresenter 获取视图实例
- numpy - Pip3 搜索找到 intel-numpy,但无法安装
- javascript - Javascript 从数组中填充下拉列表并选择一些选项
- php - 说这个参数属于这个类有什么意义?