C++ _stprintf_s treats“;10“;作为「;1“;

C++ _stprintf_s treats“;10“;作为「;1“;,c++,c,C++,C,我试图将一个数字传递到一个字节数组中,但要将该数字视为一个字符数组。 这是我的密码: for(int i=1;i<=totalFiles;i++) { BYTE* input = new BYTE[sizeof(DWORD) * sizeof(TCHAR)]; _stprintf_s((TCHAR*)input, sizeof(DWORD) * sizeof(TCHAR), _T("%d"), i); QueueToThreadPool(input); } fo

我试图将一个数字传递到一个字节数组中,但要将该数字视为一个字符数组。 这是我的密码:

for(int i=1;i<=totalFiles;i++)
{
    BYTE* input = new BYTE[sizeof(DWORD) * sizeof(TCHAR)];
    _stprintf_s((TCHAR*)input, sizeof(DWORD) * sizeof(TCHAR), _T("%d"), i);

    QueueToThreadPool(input);
}

for(int i=1;i我猜您的程序是作为UNICODE程序构建的,但使用该字符串的任何程序都将其视为普通ASCII字符串。因此,第一个UNICODE字符的最高有效字节(为零)被视为字符串的结尾。

您是否试图获取数字的字符串表示形式或内存中表示数字的实际字节数?如果它是您想要的字符串表示形式,则使用
sizeof(DWORD)
实际上没有意义(这会将值限制为999)。由于传递的是字节计数而不是字符计数,因此也会出现缓冲区溢出。1)当您真正需要的是整数的字符串表示长度时,为什么要分配
sizeof(DWORD)
tchars?如果我是12345,
sizeof(DWORD)
不够大,无法容纳结果。2) 终端零点也会占用空间;允许添加1。3) 他们所说的;Unicode、16位TCHARS等。