首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过VisualC++正确地调用` by‘命令?

如何通过VisualC++正确地调用` by‘命令?
EN

Stack Overflow用户
提问于 2016-04-19 21:50:35
回答 3查看 1.3K关注 0票数 0

我试图在我的程序中使用命令dir /s C:\ /b > temp.txt。我已经在命令行中尝试过了,而且它总是有效的,但是当我在我的程序中尝试它时,我会得到我的程序的文件和文件夹。

我使用的是VisualC++和命令system("dir /s C:\ /b > temp.txt");。我知道我的程序出了问题,但我不知道是什么。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-19 21:57:04

实际上,不太清楚您在问什么,但我确信需要在字符数组文字中转义反斜杠字符:

代码语言:javascript
复制
system("dir /s C:\\ /b > temp.txt");
              // ^

或者提供一个原始字符串文字

代码语言:javascript
复制
system(R"x(dir /s C:\ /b > temp.txt)x");
票数 3
EN

Stack Overflow用户

发布于 2016-04-19 21:57:25

你的问题是\被吞噬了。你得做:

代码语言:javascript
复制
system("dir /s C:\\ /b > temp.txt");

\意味着您试图使用转义字符(您不想这样做),所以您必须提供一个额外的\来告诉C(或者在您的例子中是C++),您实际上想要一个文字。

票数 1
EN

Stack Overflow用户

发布于 2016-04-19 22:20:12

除了其他人关于转义字符的内容外,在Visual中运行程序时的当前工作目录很可能是项目所在的目录。在调试中的属性中有一些设置,如果需要,也可以使用Windows调用来更改当前的工作目录、获取目录内容等等,如果您使用的是本机C++。如果使用CLR,还有其他方法可以实现相同的目标。

在一个实际的项目中,使用system()可能不是实现您想要的结果的最佳方法。

虽然Windows的使用将导致一些丑陋的C代码,但您可以将其打包到一个实用程序库中,该实用程序库公开使用std::string的函数。

从这里开始:https://msdn.microsoft.com/en-us/library/windows/desktop/aa365200(v=vs.85).aspx

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36730138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档