Command line 如何设置c++/cli程序,用于处理参数并以类似于find命令的文本形式传输

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

如果我的程序名为Test.exe,如何使用下面的代码正确设置参数?我认为我需要添加参数来检查|命令,但如果使用重定向命令“>”,则不需要这样做。所以我认为我需要在C++中使用流读取器,但是我不确定如何在100%个管道中实现它:
 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());