向量输出向量到文本文件与制表符分隔符C ++

时间:2016-04-28 12:06:41

标签: c++ text vector output

我试图将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;
}

输出样本: enter image description here

4 个答案:

答案 0 :(得分:1)

解决问题的两种方法:

  1. 检查您是否正在打印最后一个元素,并且不打印标签/换行符。

  2. 检查您是否正在打印第一个元素,如果没有打印前导标签/换行符。

答案 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;
}