我有下一个代码:
ofstream dataIndex;
dataIndex.open("file");
index="2222";
std::stringstream sstr1;
sstr1<<index<<'1';
sstr1<<setfill('0')<<setw(index.length()-9);
string index1= sstr1.str();
dataIndex<<index1;
dataIndex.close()
我希望结果:
2222100000
但只有我
22221
没有零?发生了什么事?
答案 0 :(得分:11)
使用std::left
左对齐输出
#include <iostream>
#include <string>
#include <iomanip>
int main()
{
std::string s( "2222" );
std::cout << std::setw(9)
<< std::setfill('0')
<< std::left
<< s
<< std::endl;
}
输出:
222200000
答案 1 :(得分:3)
操纵器与输入一样应用于流。要使它们生效,需要先应用它们。例如,这里是如何在字符串流上填充零。
std::string index("2222");
std::ostringstream sstr1;
sstr1 << std::setw(9) << std::setfill('0') << index << '1';
std::cout << sstr1.str(); // 0000022221
如果您想要以不同方式填充,只需添加方向操纵器,如std::left
,std::right
等。
std::string index("2222");
std::ostringstream sstr1;
sstr1 << index << std::setw(10-index.length()) << std::setfill('0') << std::left << '1';
std::cout << sstr1.str(); // 2222100000
答案 2 :(得分:0)
使用负数调用setw()操纵器(索引字符串的长度仅为4)。那可能是罪魁祸首。