如何将用户从控制台的输入读取为 Unicode 字符串?

2024-03-16

一个C++初学者的问题。这是我目前拥有的:

// From tchar.h
#define _T(x)       __T(x)

...

// From tchar.h
#define __T(x)      L ## x

...

// In MySampleCode.h
#ifdef _UNICODE
    #define tcout wcout
#else
    #define tcout cout
#endif

...

// In MySampleCode.cpp
CAtlString strFileName;
if (bIsInteractiveMode)
{
char* cFileName = new char[513];
tcout << endl;
tcout << _T("Enter the path to a file that you would like to XYZ(purpose obfuscated) ") << endl;
tcout << _T(">>> ");            
cin.getline(cFileName, 512);
strFileName = cXmlFileName;
}

// Demonstrates how CAtlString can be printed using `tcout`.
tcout << _T("File named '") << strFileName.GetString() << _T("' does not exist.") << endl;

这恰好在美国“有效”,但我不知道如果......假设法国用户正在运行此应用程序并开始输入奇怪的字符,例如会发生什么Çanemeplaîtpas.xml在命令行上。我正在寻找一种干净的方法来填充字符串CAtlString类型。输入的最大长度始终可以设置得足够长,但理想情况下我想将 unicode 和非 unicode 条目限制为相同数量的字符。希望这样做相当简单和优雅。


如果您期望 unicode 输入,您不应该使用 wcin 流吗?

#include <iostream>
#include <string>
#include <locale>

int main()
{
    using namespace std;

    std::locale::global(locale("en_US.utf8"));

    std::wstring s;

    std::wcin >> s;

    std::wcout << s;

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

如何将用户从控制台的输入读取为 Unicode 字符串? 的相关文章

  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 如何修复:“无法解析类型 java.lang.CharSequence。它是从所需的 .class 文件间接引用的”消息? [复制]

    这个问题在这里已经有答案了 我正在尝试使用这个字符串 amountStr amountStr replace replace replace 但我收到一条错误消息 我知道我收到的错误消息是因为我刚刚发布的字符串已过时 所以我想知道该字符串的
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • C#:指定 Dll 引用的位置

    在C 控制台应用程序中 我们可以通过 解决方案资源管理器 引用 然后添加reqd dll的引用 来添加dll引用 在这种情况下 应用程序期望 dll 存在于同一文件夹中 如果没有 那么应用程序将无法工作 抛出异常 是否有可能 如果 dll
  • 对 -finstrument-functions 的未定义引用

    我正在尝试跟踪内核函数并且我正在使用 finstrument functions这样做 但我收到未定义的参考错误 如下所示 arch arm kernel elf c 9 undefined reference to cyg profile
  • 使用 PHP 打乱多个字符串值

    大家好 我每个问题有 4 个选项 每个字符串都带有冗长的句子 我的变量将类似于 option1 option2 option3 option4 我想像 3 2 1 4 一样随机排列这个变量顺序 或者类似地它会像随机一样随机排列函数 我以多种
  • 是否可以使用 npm / package.json 内的环境变量?

    我正在尝试构建一个 package json 以便在 Heroku 上运行 NodeJS 应用程序时 它将使用环境变量运行 script postinstall 步骤 例如 scripts postinstall command ENV V
  • Visual Studio 2017 无法打开源文件

    我是 C 新手 刚刚安装了 Visual Studio Community 2017 我不太知道要使用什么工作流程 所以我凭自己的直觉 当我尝试包括windows h using include
  • FontAwesome Icons 仅在鼠标悬停时旋转?

    在很棒的字体中 我如何使用此代码 i class fa fa spinner fa spin i 仅适用于鼠标悬停 您也可以创建另一个仅用于悬停的类 而不是覆盖该类 fa spin hover hover webkit animation
  • TypeScript 中的扩展如何工作?

    以下 TypeScript 代码 class BaseClassWithConstructor private id number constructor id number this id id class DerivedClassWit
  • 随机数,Math.floor(...) 与 Math.ceil(...)

    我见过很多生成随机数的代码 例如 random integers in the interval 1 10 Math floor Math random 10 1 无论如何 我感觉我失去了一些东西 为什么人们不使用更简洁的方式 Math c
  • 是否可以用符合特定条件的行号填充数组而不循环?

    我想用仅满足特定条件的行的行号填充VBA中的数组 我想要尽可能最快的方法 例如 类似RowArray index valRange valMatch row 下面是 慢速 范围循环的代码 Current Code Sub get row n
  • 构建带有递归函数的.so

    在处理一些项目期间 我遇到了无法构建so库的问题 我收到如下错误 创建共享对象时 不能使用针对符号 的重定位 R X86 64 PC32 使用 fPIC 重新编译最终我设法找到了根本原因 这是库中的递归函数 例如 我有以下众所周知的例子 s
  • Django Channels 错误:您不能在与异步事件循环相同的线程中使用 AsyncToSync

    我试图复制 Django Channels Documentation 中的教程 但我有错误 它说 您不能在与异步事件循环相同的线程中使用 AsyncToSync 只需直接等待异步函数 信息 WebSocket 握手 ws notifica
  • 与从 Cloud Console 创建的项目相比,从 App Engine 控制台创建的项目的功能较少

    当我从 App Engine 控制台创建新应用程序时https appengine google com https appengine google com 该应用程序也会出现在 Cloud Console 上https cloud go
  • 通过套接字获取线路

    是否有一个 libc 函数可以执行与 getline 相同的操作 但可以使用连接的套接字而不是 FILE 流 解决方法是在套接字上调用 fdopen 这样做的时候需要注意哪些事项 这样做 不这样做的理由是什么 这样做的一个明显原因是调用 g
  • 判断表单输入是否有焦点

    我正在 AngularJS 中进行验证 如果有 3 种类型的错误 我会显示一个 div 对于必需的 我只想在页面以空值提交时才显示错误消息 div class error div 对于正则表达式验证 我希望它标记实时的默认行为 div cl
  • jquery onclick 添加左边距

    我正在尝试用 JS 做一些非常简单的事情 但我无法让它工作 我想当点击div添加一个负数margin left到另一个div 但我希望每次点击时都会发生div 而不是像现在这样一次 每次我点击我的 next nav 我想要 nav移动自 1
  • 使用 Devise 注销所有用户

    我在 ruby on rails 应用程序中使用 devise 我有一个使用设备的 User 类和 AdminUser 类 在我的管理面板中 我想注销所有用户 但不注销管理员用户 执行此操作的最佳方法是使用范围级别的注销方法 因此 如果您想
  • TransactionAttribute 注释 (@REQUIRES_NEW) 被忽略

    我遇到了两个单独的事务的问题 这些事务以与实际执行的顺序相反的顺序刷新到数据库 这是业务案例 存在 RemoteJob RemoteJobEvent 一对多关系 每次创建新事件时 都会获取一个时间戳 并将其设置在RemoteJob和Remo
  • 编译器如何知道在哪里可以找到#include

    我想知道 Mac OS X Windows 和 Linux 上的编译器如何知道在哪里可以找到 C 头文件 具体来说 我想知道它如何知道在哪里可以找到带有 lt gt 括号 include Users Brock Desktop Myfile
  • 嵌入式Linux中UART上的9位协议

    我正在尝试在嵌入式 Linux 中的 UART 上强制使用 9 位协议 目前我正在 am335x evm 板上对此进行测试 我计划使用坚持平价来做到这一点 理想情况下 我希望不需要实际修改 omap serial c 驱动程序的任何代码 9
  • 如何将用户从控制台的输入读取为 Unicode 字符串?

    一个C 初学者的问题 这是我目前拥有的 From tchar h define T x T x From tchar h define T x L x In MySampleCode h ifdef UNICODE define tcout