标题:输出为空的原因 求解哇
只看楼主
cbd666
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2019-9-26
结帖率:66.67%
已结贴  问题点数:20 回复次数:2 
输出为空的原因 求解哇
程序代码:
#include<stdio.h>
#include<windows.h>
#include<string>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {


    //多字符转宽字符
    char a[] = "这是多字符转宽字符";
    setlocale(LC_ALL, "");
    //先获取其a的大小
    DWORD Mnum; //用来保存大小
    Mnum = MultiByteToWideChar(CP_ACP, 0,a,-1, NULL,0); //计算a的大小 , 第三个参数为被转换的字符,第四个取最后\0之前的,第五个参数为接收转换之后的数据,由于我们这里先计算大小所以参数为NULL,第六个参数为被转换的大小
    wchar_t * b = new wchar_t[Mnum];
    if (!b) {
        delete[] b;
        return 1;
    }

    MultiByteToWideChar(CP_ACP, 0, a, -1, b, Mnum);
    wprintf(L"L->M %s\n", b);
    

    system("pause");
    return 0;
}


但是如果自己入口函数是main的话就可以进行输出

[此贴子已经被作者于2019-12-3 17:38编辑过]

搜索更多相关主题的帖子: 参数 字符 大小 include 输出 
2019-12-03 17:35
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
1. 不要贴无关的代码。比如,你的 MultiByteToWideChar 等完全跟你所想问的问题无关
2. 既然你需要“控制台”,为什么不创建控制台程序?既然你不需要“控制台”,那又为什么一定要用控制台相关的函数(printf等)?
3. wchar_t * b = new wchar_t[Mnum]; new失败不是返回nullptr,而是抛出异常std::bad_alloc

如果你一定要在没有控制台的程序中使用控制台,那你可以通过 AllocConsole() 来创建一个控制台。
程序代码:
#include <windows.h>
#include <stdio.h>
#include <locale.h>
#include <io.h>
#include <fcntl.h>
#include <conio.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
    {
        AllocConsole();
        *stdin  = *_fdopen( _open_osfhandle((intptr_t)GetStdHandle(STD_INPUT_HANDLE),_O_TEXT), "r" );
        *stdout = *_fdopen( _open_osfhandle((intptr_t)GetStdHandle(STD_OUTPUT_HANDLE),_O_TEXT), "w" );
        *stderr = *_fdopen( _open_osfhandle((intptr_t)GetStdHandle(STD_ERROR_HANDLE),_O_TEXT), "w" );
    }

    setlocale( LC_CTYPE, "" );
    printf( "%s\n", "多字节字符串" );
    wprintf( L"%s\n", L"宽字符串" );

    _getch();
    return 0;
}

2019-12-04 09:14
cbd666
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2019-9-26
得分:0 
回复 2楼 rjsp
好 谢谢
2019-12-04 17:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498188-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046025 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved