2012-07-20 41 views
1

想象有很多說法和消息寫出來的C#屏幕「COUT」 喜歡 「Console.WriteLine」

cout << "statement A :" << a << "\t statement B :" << B 
    << "\t statement C :" << C << "\t statement D :" << D; 

你會寫:

Console.WriteLine(
    "statement A :{0}\t statement B :{1}\t statement C :{2}\t statement D :{3}", 
    a, b, c, d); 

它就像C#中的printf,但我不想在我的程序中使用C語句;有沒有辦法用C++編寫更少的<<而不使用printf

+0

在C#這是通過'了''B','C'完成,'D'從'System.Object'所有派生。在C++中,通過爲所涉及的類型重載'operator <<'來完成。這是兩種不同的語言! – 2012-07-20 09:35:17

回答

6

例如使用boost::format。因此,在C#

cout << boost::format("statement A: %1%\tstatement B: %2%\tstatement C: %3%\t statement D: %4%") %a %b %c %d << endl; 

這是Console.WriteLine("statement A: {0}\t...", a, b, c, d);

+0

你也可以擺脫'endl'(除非你真的想刷新流,但通常不相關)。 – 2012-07-20 08:51:45

+0

好,但我不想使用「提升庫」 – MostafaJF 2012-07-20 08:55:03

+2

@ user1521362你應該擁抱提升。如果你正在編程C++,那麼你不可能在沒有使用Boost的情況下在大型項目中編寫好的代碼。 – 2012-07-20 08:58:24