关于wchar_t类型的输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于wchar_t类型的输出相关的知识,希望对你有一定的参考价值。

我们知道,_TCHAR等同于wchar_t,它的输出不能用cout而要用wcout。
那对于下面这个程序编译出的可执行文件abc.exe,在DOS下输入:
abc.exe the string
想要的输出为:
================
3
the
string
abc我de
================
但是实际上的输出为:
================
3
003B5070
003B5086
003B508E
abc
================
即部分只显示地址,部分显示不全。
源程序如下:
#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

wcout<<argc<<endl;
int i;
for(i=0;i<argc;i++)
cout<<argv[i]<<endl;
wchar_t b[] = L"abc我de";
wcout<<b;
return 0;

参考技术A _TCHAR并不等同于wchar_t,只有程序使用UNICODE时它们才相等。WCHAR才和wchar_t相等。
另外
for(i=0;i<argc;i++)
i应该从1取值。

SWIG:对 Java 的 wchar_t 支持

【中文标题】SWIG:对 Java 的 wchar_t 支持【英文标题】:SWIG: wchar_t support for Java 【发布时间】:2015-09-14 19:07:36 【问题描述】:

我在 C# 中使用 %include wchar.i,它似乎对映射到 C# 的 string 的所有 wchar_t 值和数组都能正常工作。 Swig 的 Python 库还在 wchar.i 文件中包含 wchar_t 的类型映射。

Java 的库没有wchar.i。这是什么原因?以及如何实现从 C++ 中的 wchar_t 类型到 Java 中的 String 的类型映射?

【问题讨论】:

【参考方案1】:

当您使用 c++ 时,您可以尝试使用 std::wstring,因为它具有适用于所有类型的类型映射:C#、Python 和 Java。在std_wstring.i

【讨论】:

由于各种原因,我无法使用 STL。不过谢谢回复 经过一番搜索,我发现 wchar 长度取决于,在一个平台上它有 2bits 并且可以直接转换为 jchar,在其他平台上有 4bits 并且需要其他威胁,更多关于 wchar c++->Java 你可以在这个线程中找到:https://community.oracle.com/message/6466730#6466730

以上是关于关于wchar_t类型的输出的主要内容,如果未能解决你的问题,请参考以下文章

关于 char wchar_t TCHAR _T() ||| 宏 _T TEXT _TEXT L

wchar_t类型的几个函数

如何把wchar_t类型的汉子转换为char*

如何更改 wchar.h 以使 wchar_t 与 wint_t 类型相同?

C++数据类型问题,wchar_t和char;size_t

CString 如何转为wchar_t