Ale*_*x B 49 c++ string padding stdstring
我正在使用std::string并需要将它们留到给定的宽度.在C++中这样做的推荐方法是什么?
样本输入:
123
Run Code Online (Sandbox Code Playgroud)
填充到10个字符.
样本输出:
123
Run Code Online (Sandbox Code Playgroud)
(123前面7个空格)
bay*_*yda 63
std :: setw(setwidth)操纵器
std::cout << std::setw (10) << 77 << std::endl;
Run Code Online (Sandbox Code Playgroud)
要么
std::cout << std::setw (10) << "hi!" << std::endl;
Run Code Online (Sandbox Code Playgroud)
输出填充77和"嗨!".
如果你需要结果作为字符串使用std :: stringstream的实例而不是std :: cout对象.
ps:负责的头文件 <iomanip>
Bri*_*ndy 43
void padTo(std::string &str, const size_t num, const char paddingChar = ' ')
{
if(num > str.size())
str.insert(0, num - str.size(), paddingChar);
}
int main(int argc, char **argv)
{
std::string str = "abcd";
padTo(str, 10);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Nav*_*een 24
你可以像这样使用它:
std::string s = "123";
s.insert(s.begin(), paddedLength - s.size(), ' ');
Run Code Online (Sandbox Code Playgroud)
gre*_*ade 22
我能想到的最简单的方法是使用stringstream:
string foo = "foo";
stringstream ss;
ss << setw(10) << foo;
foo = ss.str();
Run Code Online (Sandbox Code Playgroud)
foo 现在应该填补.
你可以通过调用创建一个包含N个空格的字符串
string(N, ' ');
Run Code Online (Sandbox Code Playgroud)
所以你可以这样做:
string to_be_padded = ...;
if (to_be_padded.size() < 10) {
string padded(10 - to_be_padded.size(), ' ');
padded += to_be_padded;
return padded;
} else { return to_be_padded; }
Run Code Online (Sandbox Code Playgroud)
小智 5
std::string pad_right(std::string const& str, size_t s)
{
if ( str.size() < s )
return str + std::string(s-str.size(), ' ');
else
return str;
}
std::string pad_left(std::string const& str, size_t s)
{
if ( str.size() < s )
return std::string(s-str.size(), ' ') + str;
else
return str;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65838 次 |
| 最近记录: |