普通视图

发现新文章,点击刷新页面。
昨天 — 2025年5月20日首页

【翻译】让MFC的窗口程序支持输出到stdout

作者 大致
2025年5月20日 16:35

今日接到一个需求:要求我们的一个MFC窗口程序同时兼容命令行模式,也就是用命令行启动并传一个以上参数时,以命令行方式运行,并在命令行上打印运行结果。
visual studio的工程向导创建工程时就对命令行输出进行了规划:如果选择Console程序,工程的编译选项将会出现“/SUBSYSTEM:CONSOLE”,这样工程编译运行之后,stdin,stdout和stderr都指向窗口。但如果选择的是Windows工程,那么编译选项会变成“/SUBSYSTEM:WINDOWS”,就无法向窗口输出了。
解决方法是重定向输出

void EnablePrintfAtMFC()
{
    if (AttachConsole(ATTACH_PARENT_PROCESS))
    {
        FILE* pCout;
        freopen_s(&pCout, "CONOUT$", "w", stdout);
        std::cout.clear();
        std::wcout.clear();
    }
}

这样,只要在输出到窗口前调用上面的EnablePrintfAtMFC();就能将字符串输出到窗口了。
注意两行clear不能省略,我第一次找到这个方法就是因为没clear而造成不能正常显示。

    EnablePrintfAtMFC();
    printf("Hello world!\n");
    std::cout << "It works!" << endl;

但是,在我们的日文命令行下想输出日文还要注意一个转码的问题。
再封装一次就好。

void MyPrint(CString strOutput)
{
    int nSjislen = WideCharToMultiByte(932, 0, strOutput.GetBuffer(0), -1, nullptr, 0, nullptr, nullptr); 
    if (nSjislen >0)
    {
        CStringA strPrintA;
        char* pstr = strPrintA.GetBuffer(nSjislen);
        WideCharToMultiByte(932, 0, strOutput.GetBuffer(0), -1, pstr, nSjislen, nullptr, nullptr);
        printf(pstr);
        strPrintA.ReleaseBuffer();
    }
    strOutput.ReleaseBuffer();
}

中文比日文稍微麻烦一点,有几种码,懒得查了,找到或者用GetConsoleCP()取一下,替换掉932就行。

via

昨天以前首页

Retro Handheld Company Suspends U.S. Shipping Over Controversial Tariffs

作者 Marc Griffin
2025年4月23日 04:45

President Donald Trump's tariffs continue to cause mayhem upon the gaming industry, disrupting the global economy in the process. As a result, various gaming companies have cranked up their prices, pushed back pre-orders, and even increased how much subscription services would cost players—we're looking at you, Nintendo, and Sony. But they're not the only companies that have responded to Trump's tariffs.

谷歌你是有多烂,能把别人的网站名错误的扣到我的网站上

作者 石樱灯笼
2024年10月23日 23:08

现在的谷歌Google真是操蛋。

语言无法形容我有多讨厌印度人。


把别人网站的标题扣我网站上

中午的时候网站崩了,检查一下发现是供应商机房的电源爆了,折腾了2小时才恢复。无聊期间用谷歌搜了下自己的网站,想检查下之前那个镜像我网站的结果滚蛋没有。

然后TMD神奇的结果就出现了。

screenshot_on_b85m_by_flameshot_at_2024-10-23_19-14-41

screenshot_on_b85m_by_flameshot_at_2024-10-23_19-27-40

谷歌怎么把 【秋风于渭水 https://www.tjsky.net/】 的网站名扣到我的网站上了?


也不是最近才开始讨厌谷歌的

上学那会可是把谷歌当宝贝了,那时候中文搜索引擎,靠谱的就他一个。后来参加工作后,由于工作需要,要大量搜索英文资料,所以谷歌更是必不可少。

谷歌发臭大概就是2016年后,也就是谷歌搞完 AlphaGo 之后,声称其会把其人工智能算法要应用到多个领域,其中一个就是谷歌翻译。那几天谷歌翻译的准确率的确上升了一点点……然后就像腹泻患者蹲上茅坑,把粪涂得满墙一般,翻译质量直接就崩了。同一时间段,YouTuBe也更新了其推送算法,出现了很严重的重复推送用户已观看视频的问题,推送质量跟美国飓风摧毁过一样,一片狼藉。

仔细想想,2016年也刚好是谷歌更换CEO后,对自己公司捅刀子该捅出效果的时候了。

印度人


奇葩的印度人

去年的时候 【挨踢路 – 老狼个人博客】 就遇到过一次谷歌抽风,搜索结果带奇怪后缀的问题。在那之前其实我就遇到过很多次谷歌干出来的奇葩设定,比如

  • 谷歌搜索结果出来的不是你的网页标题,而是谷歌自己猜想出来的玩意
  • site: 或 URL 搜出来的结果完全不能表示最终搜索结果
  • 用不同关键字搜出来的相同内容,标题是不同的

这些应该都在谷歌的 Google Search Central Community 有记录过。所有人都在骂,但是印度人的脑逻辑是很神奇的。

现在倒好,我也中招了,而且更奇葩。

screenshot_on_b85m_by_flameshot_at_2024-10-23_20-57-57

10年啊,10年的老站,谷歌你他妈的连个网站标题都搞不明白。

这是搞得有多砸才能完成的壮举啊?谷歌?


互联网正在死去

以前总有人说,中文已死,中文正在死去。

全球都没好到哪里去嘛。

 

摆烂吧。

人类亡了。

The post 谷歌你是有多烂,能把别人的网站名错误的扣到我的网站上 first appeared on 石樱灯笼博客.
❌
❌