为什么当我使用**时,Windows将我的目录列表注入argv
Why is Windows injecting my directory listing into argv when I use **?
主要方法如下:
int main(int argc,char** argv)
{
std::string expression=argv[1];
for(int i=2;i<argc;i++)
{
expression+=' ';
expression+=argv[i];
}
std::cout << expression << std::endl << std::endl;
Expression* expr = Expression::build(expression.c_str());
std::cout << expr->evaluate() << std::endl;
delete expr;
return 0;
}
由于某些原因,这在大多数情况下都很有效,但请参阅以下输入/输出示例:
D:TylerDesktop>a 2**3
2**3
8
D:TylerDesktop>a 2 ** 3
2 10284556_10203827451228798_9031461414658797199_o.jpg 15686-vanille.p3t 18
865-MiraiNikki.p3t 20777-MIRRORSEDGE2AnimatedTheme.p3t [APE] gras.gpl [Irfa
nView] [APE] gras.pal a.exe arboles_FM.png calc.c calc.cpp couch.png deskto
p.ini gras.pal hackzorz log.txt montanas_FM.png p3textractor p3textractor.z
ip PALLET TOWN.bmp PALLET TOWN.png Pokemon FireRed.bak Pokemon FireRed.gba
Pokemon FireRed.ini Pokemon FireRed.zip ROM Hackers GBA Tool Pack roms send
eros_cope.png senderos_FM.png Thumbs.db Tileset0.bmp Tileset0.pal untitled.
bmp untitled.PNG wdps 3
我有一种感觉,这是某种窗口的事情,还是我遗漏了一些重要的东西?
**
在许多shell(包括windows)中是一个经典的"通配符"。它将被替换为当前目录下所有文件的列表。
因此,您可以执行del *
删除所有文件。使用多个*'s与使用单个*'s相同。
相关文章:
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- gdb 中的列表命令不输出我编写的代码
- 只有我的"链接列表"中的第一个节点正在打印
- 如何确保我的节点被添加到链接列表中
- 无法在我的链接列表中插入项目,head始终为NULL
- 如何修复我的函数 popFront 为我的列表?
- 如何重载运算符<<显示我的列表
- 为什么我不能将元素插入数组中的列表?
- 似乎无法将我的标题文件与我的CPP文件连接到链接列表中
- 从二进制文件加载列表后,我的代码似乎进入了无限循环
- 我的列表类别的C SEG故障,但似乎都在检查
- 如何访问列表中的数据成员,具有与我的列表不同的类型
- 为什么我的列表中的迭代失败
- 为什么我的列表值被覆盖
- 为什么我的列表插入函数不生成新节点
- 我需要一个while循环来控制我的列表
- 当我尝试通过我的函数打印我的列表时出现分段错误
- 为什么我的列表在最后一次函数调用后被更改
- 我的合并排序函数是吐出 0 而不是对我的列表进行排序
- 我改变了我的列表(和代码),所以它现在处理Node*而不是Node Objects,这导致了一个未定义的引用错误