无法在 VC++ 中使用 std::cout 打印出 argv[] 值

2023-12-11

这是我在该网站上的第一个问题,尽管我来这里参考已经有一段时间了。我知道 argv[0] 存储程序的名称,其余命令行参数存储在剩余的 argv[k] 槽中。我还了解 std::cout 将字符指针视为空终止字符串并打印该字符串。下面是我的程序。

#include "stdafx.h"
#include <fstream>
#include <iostream>

using namespace std;

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

    cout << argv[0] << " ";
    cout << argv[1] ;

    return 0;
}

根据我在本期互联网搜索中看到的所有其他程序,该程序应该打印出两个字符串,即。程序名称和命令行参数。控制台窗口显示

0010418c 001048d6

我相信这些是分别指向 argv[0] 和 argv[1] 的指针。 我唯一的命令行争论是“nanddumpgood.bin”,它出现在 argv[1] 中,如果我在调试时将鼠标悬停在 argv[] 数组上,它会正确显示字符串。

这是什么情况?我究竟做错了什么?我明白,在特殊情况下数组会衰减为指针?这是没有的情况吗?


我也明白std::cout将字符指针视为以空结尾的字符串并打印该字符串。

That's mostly正确的。它适用于char*,但不是其他类型的字符。这正是问题所在。你有一个_TCHAR*,即char*在 ANSI 版本上,但不在 Unicode 版本上,因此您不会获得特殊的字符串行为,而是获得默认的指针行为。

我明白,在特殊情况下数组会衰减为指针?这是没有的情况吗?

argv是一个数组,但两者都不是argv[0] nor argv[1]都是数组,它们都是指针。腐烂不是这里的一个因素。

最简单的修复方法是使用int main(int argc, char* argv[])这样您就可以获得命令行参数的非 Unicode 字符串。我推荐这个,而不是切换到wcout,因为它与您在互联网上找到的其他代码更兼容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在 VC++ 中使用 std::cout 打印出 argv[] 值 的相关文章

随机推荐

  • 将 pandas 数据帧写入 xlsm 文件(启用宏的 Excel)

    写一个pandas DataFrame到 Excel 工作簿中 xlsx格式很简单 import pandas as pd df pd DataFrame firstColumn 5 2 0 10 4 secondColumn 9 8 21
  • AntiXss.HtmlEncode 与 AntiXss.GetSafeHtmlFragment

    谁能告诉我这两者之间的区别吗 AntiXss HtmlEncode vs AntiXss GetSafeHtmlFragment Html编码实际上对标签进行编码 AntiXss HtmlEncode b hello b
  • Java MongoDB:com.mongodb.DB 和 com.mongodb.client 之间有什么区别

    我是 MongoDB 的新手 我正在一个 Java 项目中工作 我开始了一些教程来开始使用驱动程序 我正在使用com mongodb client直到我注意到里面没有findOne方法com mongodb client MongoColl
  • 示例 MQTT 客户端代码不工作 C

    我从那里得到了示例代码here 我有头文件MQTTClient h以及 但是 当我构建时 我收到错误 undefined reference to MQTTClient create undefined reference to MQTTC
  • 如何使用 Blazor 生成并保存文件客户端?

    我想要一个 SPA 来完成客户端的所有工作 甚至生成一些图表 视觉效果 我希望能够让用户单击按钮并保存页面中的视觉效果 表格和其他内容 既可见又不可见 因此右键单击保存或复制 粘贴并不总是一个选项 如何从 web assembly blaz
  • 如何通过管道传输字符串来处理'STDIN?

    我有一个命令需要来自管道的输入 例如 考虑一下著名的cat命令 echo Hello cat Hello 假设我在 Perl 6 程序中有一个字符串 我想将其通过管道传输到命令 use v6 my input Hello This is t
  • flutter - 如何在应用程序启动和使用时下载资产

    目前 我的应用程序有许多资产 图像 声音 字体 json SQL lite 数据库文件等 全部已定义在pubspec yaml 但是 由于要求减少 APK 大小 我需要其中一些应用程序启动时下载并将其保存到存储中 下次无需下载 如果资源尚未
  • 如何使用 Spring MVC 从 url 下载文件?

    我的 jsp 中有这样的下载选项 a href img src images download gif alt Download border 0 align right 上面的 url 是文件的位置 名称是文件名 单击jsp中的下载选项时
  • awk每列n条数据的平均值

    使用 awk 将值存储在数字列表中 提供使用 awk 对列中每组 3 个点进行平均的解决方案 如何将其扩展到保持格式的无限数量的列 例如 2457135 564106 13 249116 13 140903 0 003615 0 00344
  • 检测并修复 JavaScript 中的循环引用

    鉴于我在一个大型 JavaScript 对象中有一个循环引用 我尝试JSON stringify problematicObject 浏览器抛出 类型错误 将循环结构转换为 JSON 这是预期的 那我想找到这个循环引用的原因 最好使用Chr
  • git 警告“无法访问权限被拒绝”在 .gitignore 目录上

    我的一个名为 Database 的目录中有一个名为 gitignore 的子目录 我希望 git 忽略它 所以我将其列在我的 gitingore 文件中 gitignore Bb in Dd ebug Rr elease gitignore
  • 在视口组件上使用 JScrollPane 鼠标侦听器

    我有一个JScrollPane可以设置其视口View到一系列不同的面板 我想在单击其视口中的任何其他组件时获取 JScrollPane 组件 如果我添加一个MouseListener对于 JScrollPane 当我直接单击窗格边框时 它会
  • 在 VBA 中下载文件并存储

    我需要下载从 REST 搜索中获得的文件 网址如下 由于隐私原因 我需要对其进行编辑 该文件应该是 Nastran 计算的结果 可以通过简单的文本编辑器查看 扩展名是 pch 比较大 21mb 如何在 VBA 中实现呢 首先 链接不起作用
  • 按返回类型重载函数?

    为什么更主流的静态类型语言不支持按返回类型重载函数 方法 我想不出有什么可以做到的 它看起来并不比支持参数类型重载有用或合理 怎么人气这么低 与其他人所说的相反 按返回类型重载is可能和is由一些现代语言完成 通常的反对意见是在类似的代码中
  • 自定义日期时间格式

    我需要将日期格式化为 2010 04 21 11 35 22 440 谁能帮我 问题是我看到的是 2009 06 15T13 45 30 0900000 或 2008 03 09 16 05 07Z 但不是我正在寻找的那个 谢谢 strin
  • 删除插件类中定义的操作

    我正在开发一个电子商务主题 我已经安装了WooCommerce PayPal 结账支付网关付款插件 我想更改此结帐按钮的位置 我尝试remove action显示结帐按钮 但它不起作用 在这种情况下如何删除操作 Hook in plugin
  • 需要在c#中进行double类型的枚举

    如何创建 double 类型的枚举 是否可能或者我必须创建某种集合和哈希 你不能把它变成一个枚举 http msdn microsoft com en us library y94acxy2 aspx 可能性之一 public static
  • 为什么 XmlPullParser 传递两个 START_DOCUMENT 事件?

    在 Android 应用程序中我有一个XmlPullParser XmlResourceParser xrp c getResources getXml rid 正如您所看到的 它来自 Android 二进制 XML 资源 并且它提供的前两
  • 检测 NSString 的语言

    有人告诉我关于 Cocoa 中的语言识别类 有人知道它是哪一个吗 This is not在职的 NSSpellChecker spellChecker NSSpellChecker sharedSpellChecker spellCheck
  • 无法在 VC++ 中使用 std::cout 打印出 argv[] 值

    这是我在该网站上的第一个问题 尽管我来这里参考已经有一段时间了 我知道 argv 0 存储程序的名称 其余命令行参数存储在剩余的 argv k 槽中 我还了解 std cout 将字符指针视为空终止字符串并打印该字符串 下面是我的程序 in