草庐IT

UNICODE_STRING

全部标签

Windows 上的 C++ std::string 转换问题

这是我的程序:boolOpen(std::stringfilename){...HANDLEhFile=CreateFile(filename.c_str(),GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);...}错误:“CreateFileW”:无法将参数1从“constchar*”转换为“LPCWSTR”指向的类型是不相关的;转换需要reinterpret_cast,C风格的转换或函数风格的转换问题出在哪里? 最佳答案 std::string由一个char数组组成

c - 是否有关于多字节字符串转换为 unicode wstring 的快速实现?

在我的项目中,我采用Aho-Corasick算法在服务器端做了一些消息过滤模式,服务器得到的消息是多字节字符串。但是经过多次测试发现瓶颈是mulitbytestring和unicodewstring之间的转换。我现在用的是一对mbstowcs_s和wcstombs_s,占了整个模式将近95%的时间成本。另外,我试过MultiByteToWideChar/WideCharToMultiByte,它得到了同样的结果。所以我想知道是否还有其他更有效的方法来完成这项工作?我的项目是用VS2005搭建的,转换后的字符串会包含汉字。非常感谢。 最佳答案

windows - 如何在 Windows 中使用 subversion 操作以 unicode 命名的文件?

假设我使用代码页为950(Big5,繁体中文)的Windows7,我想操作一些混合了unicode名称的文件,例如简体中文文件.txt(GB2312,简体中文)svn.如果我使用chcp950,当我运行时:svnadd.\简体中文文件.txt我得到一个错误:svn:warning:W155010:'D:\path\to\work-dir\?体中文文件.txt'notfoundsvn:E200009:Couldnotaddalltargetsbecausesometargetsdon'texistsvn:E200009:Illegaltargetfortherequestedoperat

c++ - 如何在 C/C++ 中的 Windows 下对两个 Unicode 字符或字符串进行不区分大小写的比较?

我正在寻找一种在Windows(C/C++,而非.NET)下对两个Unicode字符(char32)进行不敏感比较的方法。我知道该解决方案应该是区域设置感知的。我想要一个不需要额外的第三方库的解决方案。 最佳答案 我的第一个想法是你应该查找CompareStringEx及其参数LOCALE_INVARIANT和NORM_IGNORECASE。 关于c++-如何在C/C++中的Windows下对两个Unicode字符或字符串进行不区分大小写的比较?,我们在StackOverflow上找到一

java - 来自 hell 的幻影文件夹(旧的 Vista 安装)导致 Java String.equals() 问题

我正在编写一个搜索计算机目录的程序。在我自己的计算机上,我安装了一个以前启动WindowsVista的驱动器。(但是,有些驱动器即使在“显示隐藏文件夹”时也不会出现。我可以看到运行cmd的文件夹,但这并不能解决我的问题。)我不太关心文件夹,但我关心的是对它们的名称进行字符串比较。但是,当我使用Filedirectory.getName()获取它们的名称时,string.equals()和string.compareTo()不适用于这些幻影文件夹。我已经打印出名称、检查空格、使用修剪等。但是名为“Boot”的隐藏文件夹仍然无法与具有相同值的字符串匹配。TLDR:幻影目录返回一个与File

python - 如何让 IDLE 接受 Unicode 字符的粘贴?

当我在IDLE中交互式工作时,我常常想将Unicode字符串粘贴到IDLE窗口中。它似乎粘贴正确,但立即生成错误。在输出中显示相同的字符没有问题。>>>c=u'ĉ'Unsupportedcharactersininput>>>printu'\u0109'ĉ我怀疑输入窗口和大多数Windows程序一样,在内部使用UTF-16,并且可以毫无问题地处理完整的Unicode集;问题是IDLE坚持将所有输入强制转换为默认的mbcs代码页,不在该页中的任何内容都会被拒绝。有什么方法可以配置或哄骗IDLE接受完整的Unicode字符集作为输入吗?Python3.2可以更好地处理这个问题,并且可以毫不

c - 如何处理跨平台 C 库中的 Unicode 路径?

我正在为C语言库做贡献。它有一个函数,该函数采用char*参数作为文件路径名。作者大多是UNIX开发人员,这在char*主要表示UTF-8的unix上运行良好。(至少inGCC,字符集可配置,默认为UTF-8。)但是,char*在Windows上表示ANSI,这意味着目前无法在Windows上使用此库的Unicode路径名,而应该使用wchar_t*并且仅支持UTF-16。(quicksearchonStackOverflow显示ANSIWindowsAPI函数不能与UTF-8一起使用。)问题是,处理这个问题的正确方法是什么?我们想出了各种方法来做到这一点,但我们都不是Windows专

【C++】深度剖析string类的底层结构及其模拟实现

文章目录前言1.string的结构2.构造、析构2.1无参构造2.2带参构造2.3问题发现及修改c_stroperator[]析构2.4合二为一——全缺省3.拷贝构造3.1浅拷贝的默认拷贝构造3.2深拷贝拷贝构造的实现4.赋值重载4.1浅拷贝的默认赋值重载4.2深拷贝赋值重载的实现5.string对象的遍历5.1【】(const版本和非const版本)5.2迭代器模拟实现(普通)5.3const迭代器模拟实现6.常见关系运算符重载7.数据插入删除及扩容操作7.1reserve7.2push_back和append7.3+=7.4resize7.5insert7.6erase8.swap和fin

windows - 比较和排序 Unicode 文件名

为Unicode实用程序和界面使用Delphi2007和TMS组件(不能选择升级到Delphi2009以获得Unicode支持)。我将文件名列表存储在字符串列表(TTntStringList)中。它已排序且不区分大小写。默认排序例程使用CompareStringW(LOCALE_USER_DEFAULT,NORM_IGNORECASE,...)来比较字符串(对于Find也是如此)。然而,这是一个问题,因为这会将dummyss.txt等同于dummyß.txt(例如),但在NTFS上,将这两个文件放在同一文件夹中是完全合法的,即它们被视为不同的名称。我的理解是,在Vista和更新版本上,

c++ - 内部和外部编码与 Unicode

由于这个问题的评论中有几位发帖人散布了很多错误信息:C++ABIissueslist我创建这个是为了澄清。用于C风格字符串的编码是什么?Linux是否使用UTF-8编码字符串?外部编码与窄字符串和宽字符串使用的编码有何关系? 最佳答案 实现已定义。甚至应用程序定义;标准并没有真正对应用程序的用途施加任何限制他们,并期望很多行为取决于语言环境。全部真正实现定义的是字符串中使用的编码文字。在什么意义上。大多数操作系统会忽略大部分编码;你会如果'\0'不是空字节就会有问题,但即使是EBCDIC也能满足要求。否则,根据上下文,会有一些可能重