我試圖cout
一個字符串後填充,使得輸出的總長度爲,比如說15C++:設置的打印一個字符串
例如,如果字符串是「湯姆」,那麼我在cout
之後想要12個空格。我知道如何使用setfill
和setw
擁有領先的空間,但是有沒有內置填充空間的方式?或者唯一的方法是獲取字符串長度並在字符串的末尾添加一堆空格?
謝謝!
我試圖cout
一個字符串後填充,使得輸出的總長度爲,比如說15C++:設置的打印一個字符串
例如,如果字符串是「湯姆」,那麼我在cout
之後想要12個空格。我知道如何使用setfill
和setw
擁有領先的空間,但是有沒有內置填充空間的方式?或者唯一的方法是獲取字符串長度並在字符串的末尾添加一堆空格?
謝謝!
我認爲你正在尋找std::left
輸出修改。
#include <iomanip> // std::setw
#include <ios> // std::left
#include <iostream> // std::cout
#include <string> // std::string
int
main()
{
const std::string words[] = {
"Tom",
"Ferdinand",
"And finally some longer string",
};
for (const auto& w : words)
std::cout << std::setw(12) << std::left << w << "|\n";
}
輸出:
Tom |
Ferdinand |
And finally some longer string|
使用標頭ios
中定義的IO操縱器std::left
。
我想cout的字符串,使輸出的總長度, 說15。例如,如果字符串是「湯姆」 ,那麼我想在cout後12個空格 。
我已經使用了以下...
// ...
{
std::stringstream ss1;
ss1 << "Tom"; // insert
const int NameFieldSize = 15;
while (ss1.str().size() < NameFieldSize) ss << " ";
// ... insert the rest of the info to ss1
// now write the full string to cout (or file)
std::cout << ss1.str() << std::endl;
}
// ...
stringstream的作品就像清點,所有格式的控制,但由於它是基於,更快的RAM。
請注意,當ss1已經比NameFieldSize更長時,代碼將檢測並可能「修復」輸出格式。
最好能注意到(或者我錯了)頭部'iostream',它給了我們'cout',包括頭部'ios'? –
@NickyC它可能會在你的實現上做到這一點,但據我所知,標準並沒有說它必須要做,所以你不能依賴它。 – 5gon12eder
最近,查找cppreference.com和N4527,自從C++ 11開始,'iso'似乎被'iostream'包含。 –