我试图将2D矢量输出到txt文件中,问题是我在文本的行末端和新行处获得了额外的标签 这是我的代码
int main()
{
vector< vector<double> > mv;
vector< vector<double> >::iterator row;
vector<double>::iterator col;
ofstream output_file("Mat.txt");
setVector(mv,5,5);
for(row = mv.begin(); row != mv.end();row++)
{
for(col = row->begin();col != row->end();col++)
{
output_file << *col << '\t';
}
output_file << '\n';
}
return 0;
}
答案 0 :(得分:1)
解决问题的两种方法:
检查您是否正在打印最后一个元素,并且不打印标签/换行符。
检查您是否正在打印第一个元素,如果没有打印前导标签/换行符。
答案 1 :(得分:0)
只需写下
for(row = mv.begin(); row != mv.end();row++)
{
if(row != mv.begin()) {
output_file << '\n';
}
for(col = row->begin();col != row->end();col++)
{
if(col != row->begin) {
output_file << '\t';
}
output_file << *col;
}
}
答案 2 :(得分:0)
重新排列我们的代码,以便row
位于内循环中,col
位于外循环中。如果命名约定有意义,那将是解决问题的重要一步。
答案 3 :(得分:0)
替代方案:
for ( row = mv.begin(); row != mv.end(); ++row )
{
std::string outs;
for ( col = row->begin(); col != row->end(); ++col )
{
outs += *col;
outs += '\t';
}
outs[outs.length() - 1] = '\n';
output_file << outs;
}