[英]C++ How do I read in a file, convert each word to lower case and then cout each word?
[英]How do I convert this C line to C++? using cout command
printf("%-8s - %s\n", c->name ? c->name : "", c->help);
我想你要找的是
cout << left << setw(8) << (c->name ? c->name : "") << " - " << c->help << endl;
left
和setw(8)
操縱器一起具有與printf
的%-8s
格式化說明符相同的效果。 但是,由於使用了setw
,您需要#include <iomanip>
才能使其正常工作。
編輯 :正如Matthieu M.所指出的,上面將永久改變cout
以便任何填充操作打印出左對齊。 請注意,這並不像看起來那么糟糕; 它僅適用於您明確使用setw
設置一些填充。 您有幾個選項可以解決這個問題。 首先,你可以強制執行在使用setw
之前的規則,你總是使用left
或right
操縱器分別左右對齊文本。 或者,您可以使用flags
和setf
函數捕獲cout
標志的當前狀態:
ios_base::fmtflags currFlags = cout.flags();
cout << left << setw(8) << (c->name ? c->name : "") << " - " << c->help << endl;
cout.setf(currFlags, ios_base::adjustfield);
這分三步進行。 第一行從cout
讀取當前格式化標志,包括它當前如何對齊填充輸出。 第二行實際打印出值。 最后,最后一行將cout
的輸出標志重置為舊值。
就個人而言,我認為第一種選擇更具吸引力,但知道第二種選擇存在是絕對好的,因為它在技術上更正確。
如果你有Boost庫:
std::cout << boost::format("%-8s - %s\n") % (c->name ? c->name : "") % c->help;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.