0

使用 C++,我想生成一个文件,我必须在其中将行号添加到每行的末尾。有些行在第 13 个字符之后结束,有些在第 32 个字符之后结束。但是行号应该在最后。一行有 80 个字符,行的最后一个数字应该在该行的第 80 列。

有没有办法做到这一点?我使用 ofstream 初始化我的文件,使用 C++。

4

2 回答 2

1

好吧,这是使用字符串流的一种方法:

#include <iostream>
#include <iomanip>
#include <sstream>

using namespace std;

int main() {
    int lineNum = 42;
    stringstream ss;
    ss << setw(80) << lineNum;
    ss.seekp(0);
    ss << "information for beginning of line";
    cout << ss.str() << endl;
    return 0;
}

基本上将流设置为右对齐并填充为 80 个字符,放下你的行号,然后寻找到你可以输出任何你想要的东西的行的开头。如果您继续将一长行数据写入流中,您当然会覆盖您的行号。

于 2011-11-24T20:28:42.150 回答
1

填充每个输出线:

#include <sstream>
#include <string>
#include <iostream>

void
pad (std::string &line, unsigned int no, unsigned int len = 80)
{
  std::ostringstream n;

  n << no;

  line.resize (len - n.str().size (), ' ');
  line += n.str();
}

int
main ()
{
  std::string s ("some line");

  pad (s, 42, 80);
  std::cout << s << std::endl;
  return 0;
}
于 2011-11-24T20:38:49.277 回答