2012-08-26 48 views
1

標準輸入。如果我有我的命令行如:C++讀取定界符

foo arg1 arg2 << HEREDOC 
    line1 
    line2 
HEREDOC 

Foo中,如何從定界符值?

int main(char *argv[]) 
{ 
    string arg1=argv[1]; 
    string arg2=argv[2]; 

    string heredoc= ? 
} 

回答

1

的定界符只是重定向到的東西stdin。所以,你可以使用:

string str; 
while (getline(cin, str)) 
    cout << str << endl; 
+0

我得到'終止叫做拋出 '的std :: logic_error' 的實例以後有什麼():basic_string的:: _ S_construct NULL不valid' – francoisrv

+0

@francoisrv這可能是因爲您主不正確地聲明。它需要是'int main(int argc,char * argv [])'。 (雖然有其他正確的聲明) –

+0

@francoisrv這很奇怪。我只是試過了: - ? – cnicutar

1

這裏的文檔是做IO重定向的又一種方式。 您的shell命令基本上是將行line1,然後line2放入您的程序的stdin

所以,你的代碼應該是這樣的:

int main(int argc, char *argv[]) 
// notice that your main declaration isn't conforming to C++ standard. 
// it need additional argc parameter 
{ 
    string arg1=argv[1]; 
    string arg2=argv[2]; 

    string heredoc_string1, heredoc_string2; 
    getline(cin, heredoc_string1); 
    getline(cin, heredoc_string2); 
}