Command line 如何设置c++/cli程序,用于处理参数并以类似于find命令的文本形式传输
如果我的程序名为Test.exe,如何使用下面的代码正确设置参数?我认为我需要添加参数来检查|命令,但如果使用重定向命令“>”,则不需要这样做。所以我认为我需要在C++中使用流读取器,但是我不确定如何在100%个管道中实现它:Command line 如何设置c++/cli程序,用于处理参数并以类似于find命令的文本形式传输,command-line,visual-studio-2012,c++-cli,Command Line,Visual Studio 2012,C++ Cli,如果我的程序名为Test.exe,如何使用下面的代码正确设置参数?我认为我需要添加参数来检查|命令,但如果使用重定向命令“>”,则不需要这样做。所以我认为我需要在C++中使用流读取器,但是我不确定如何在100%个管道中实现它: using namespace System; using namespace System::IO; int main(array<System::String ^> ^args) { // this doesn't w
using namespace System;
using namespace System::IO;
int main(array<System::String ^> ^args)
{
// this doesn't work with piped in text
Console::WriteLine(":::{0}:::", args[0]);
}
在命令提示下,我键入“echo hello world | test”
如何在Windows命令提示符下实现这一点的示例是find命令。我正试图使用Visual Studio 2012在我的c++/cli程序中实现这一点。示例:“帮助查找”:
你的程序没有看到管道。shell使用管道将
stdout
从第一个程序重定向到第二个程序的stdin
。这意味着在Test.exe
中,您将使用控制台::Readline
获得输入:
Console::WriteLine(":::{0}:::", Console::ReadLine());
谢谢如果管道文本只有一行,我相信您是100%正确的。更新了管道中任何行数的问题。@RetroCoder如何处理多行取决于您将如何使用它。如果您只需要几行,那么可以循环使用
Console::ReadLine()
并缓冲文本,然后在完成后进行处理。如果可能有大量文本,您可能希望扩展该循环,以便一次只阅读和处理一行。谢谢您已经在那里。。。我不会创建新的缓冲区,而是将流推送到读卡器中。如何删除问题?;)b/c参数使用系统进程调用下一个管道进程不是一个真正的问题。出于某种原因,我认为控制台神奇地处理了管道参数。
:::hello world:::
If a path is not specified, FIND searches the text typed at the prompt
or piped from another command.
Console::WriteLine(":::{0}:::", Console::ReadLine());