Определить положение указателя в текстовом файле

63
4

Предполагая, что у меня есть текстовый файл

ID       Name         A1      B1       C1     D1
1234567 Bob Persie 12.1 33.0 44.0 55.0
7654321 Tom Hard 12.2 13.0 31.0 3.0

Мне нужно добавить слово: поговорить со словом: Том, чтобы он выглядел так

ID       Name         A1      B1       C1     D1
1234567 Bob Persie 12.1 33.0 44.0 55.0
7654321 Tomtalking Hard 12.2 13.0 31.0 3.0

Я знаю, что мне нужно использовать функцию readt.seekp, чтобы установить указатель на позицию после буквы "m" в слове Tom.

У меня проблемы с определением положения буквы "m".

readt.seekp (позиция, ios :: beg);

спросил(а) 2021-01-25T16:20:53+03:00 4 месяца, 4 недели назад
1
Решение
77

Вы должны переписать весь файл, вы не можете просто вставить какой-либо текст, как вы привыкли, из текстового редактора, вы можете только перезаписать существующий контент и добавить его в конец файла.

Одним из возможных решений может быть чтение строк за строкой, массаж линии, запись строки за строкой во временный файл и, наконец, переименование временного файла на исходное имя файла.

Для массажа сделайте замену. Так:

source = open(sourcename, read-only)
(temp, tempname) = tempfile(write-only)

for each line in source:
line.replace("Tom", "Tomtalking")
temp.write(line)

close(temp)
close(source)
rename(tempname, sourcename)

ответил(а) 2021-01-25T16:20:53+03:00 4 месяца, 4 недели назад
64

прочитайте всю строку строки за строкой - например, в вектор строк, выполните необходимые добавления и перезапишите файл. Это более распространенный и простой способ сделать это, чем seekp.

ответил(а) 2021-01-25T16:20:53+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема