将wchar_t转换为字符
Conversion of wchar_t into char
我正在尝试使用 wcstombs
将wchar_t
转换为char
。如果只转换 1 个值,它可以正常工作,但是当转换超过 1 个值时,它会给出意外的结果。这是我要转换的两个wchar_t
值:
wchar_t szBuf[BUFF_LEN];
wchar_t szBuf1[BUFF_LEN];
并使用wcstombs
进行转换:
char user[]="";
int length = wcstombs(user,szBuf,250);
char pass[]="";
int length1 = wcstombs(pass,szBuf1,250);
假设我在 szBuf
中有 Alice,szBuf1
中有 alice123,那么pass
会给出正确的值,但user
会有一个像 aalice123 这样的值。错误是什么?
您正在调用未定义的行为,因为您在缓冲区边界之外写入。user
缓冲区和pass
缓冲区的长度均为1
(它们是由 ""
的副本初始化的数组(。所以你很高兴地写到随机记忆中,任何事情都可能发生。
目标缓冲区太小。
char user[] = "";
等于char user[1] = "";
。这意味着您将写入未分配的空间,这是未定义的行为。这是非常糟糕的,因为无法保证会发生什么。
指定去离子缓冲液的大小:char user[250] = "";
相关文章:
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 尝试将字符串/字符转换为整数会产生意外结果
- 如何使用C++将字符串中的字符转换为整数变量
- 字符转换功能 std::isupper() & std::islower() C++17
- 将字符 * 转换为字符串 *
- 在编译时将常量字符* 转换为常量 char_type*
- 如何在 C/C++ 中将无符号字符*转换为无符号字符数组?
- 错误:请求从"常量字符 [5]"转换为非标量类型"字符串"
- 无法使用字符串流将字符转换为字符串C++
- 将无符号字符 C++ 转换为 C#
- C++:使用没有位移位的指针将无符号字符转换为无符号 int
- 为什么我可以隐式地将字符*转换为常量字符*,但不能将无符号字符*
- 无法<string>从"常量字符 []"转换为<类名>
- 不能将字符转换为整数吗?
- 编译时将字符*转换为字节
- CP1251:从字符* 转换为 wchar_t* 时的编码失真
- 将单个字符转换为 std::string 前缀 \x01
- PPM 将字符转换为 int 授予负数
- 通过像printf这样的可变参数函数传递一个带有常量字符*转换函数的类
- 将常量字符* 转换为字符时出错