Как записать в определенные столбцы файла, используя C ++? - PullRequest
0 голосов
/ 24 ноября 2011

Используя C ++, я хочу создать файл, в который мне нужно добавить номер строки в конец каждой строки.Некоторые строки заканчиваются после 13-го символа, некоторые заканчиваются после 32-го.Но номера строк должны быть в конце.Строка длиной 80 символов, последний номер строки должен быть в 80-м столбце строки.

Есть ли способ сделать это?Я инициализирую свой файл с использованием ofstream, использую C ++.

Ответы [ 2 ]

1 голос
/ 25 ноября 2011

Заполняйте каждую строку вывода:

#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;
}
1 голос
/ 25 ноября 2011

Хорошо, вот один из способов сделать это, используя поток строк:

#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 символов, устанавливает номер строки и затем ищет началолинии, где вы можете вывести все, что вы хотите.Если вы продолжаете записывать длинную строку данных в поток, вы, конечно, перезаписываете номер строки.

...