std::basic_filebuf::seekoff
Материал из cppreference.com
|
|
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
<metanoindex/>
<tbody> </tbody> protected: virtual pos_type seekoff( off_type off, std::ios_base::seekdir way, std::ios_base::openmode which = std::ios_base::in | std::ios_base::out ); |
||
Перемещает указатель файла, если возможно, на должность, которая соответствует именно
off символов из начала, конца или текущей позиции в файле (в зависимости от величины way.Оригинал:
Repositions the file pointer, if possible, to the position that corresponds to exactly
off characters from beginning, end, or current position of the file (depending on the value of way.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Если соответствующий файл не открыт (
is_open()==false, не удается сразу.Оригинал:
If the associated file is not open (
is_open()==false, fails immediately.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Если многобайтовые кодировки является государственно-зависимых (codecvt::encoding() вернулся
-1) или переменной длины (codecvt::encoding() вернулся 0) и смещение off не 0, не удается сразу. эта функция не может определить количество байт, которые соответствуют off символов.Оригинал:
If the multibyte character encoding is state-dependent (codecvt::encoding() returned
-1) or variable-length (codecvt::encoding() returned 0) and the offset off is not 0, fails immediately: this function cannot determine the number of bytes that correspond to off characters.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
way Если не std::basic_ios::cur или смещение off не 0, и самые возмущаются операцию сделали на этом filebuf объект был выходной (то есть, либо положить буфер не пуст, или самый последний называется функция была overflow()), а затем вызывает std::codecvt::unshift для определения Отменить замену последовательности необходимо, и пишет, что последовательность в файл путем вызова overflow().Оригинал:
If
way is not std::basic_ios::cur or the offset off is not 0, and the most resent operation done on this filebuf object was output (that is, either the put buffer is not empty, or the most recently called function was overflow()), then calls std::codecvt::unshift to determine the unshift sequence necessary, and writes that sequence to the file by calling overflow().Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
затем преобразует аргумент
way до значения whence типа int следующим образом:..Оригинал:
Then converts the argument
way to a value whence of type int as follows:Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Значение
way Оригинал: value of way Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
value of whence
|
std::basic_ios::beg
|
SEEK_SET |
std::basic_ios::end
|
SEEK_END |
std::basic_ios::cur
|
SEEK_CUR |
Тогда, если характер Кодирование с фиксированной шириной (
codecvt::encoding() возвращает некоторые положительные width номер, перемещает указатель как бы std::fseek(file, width*off, whence).Оригинал:
Then, if the character encoding is fixed-width (
codecvt::encoding() returns some positive number width, moves the file pointer as if by std::fseek(file, width*off, whence).Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Иначе, перемещает указатель как бы
std::fseek(file, 0, whence).Оригинал:
Otherwise, moves the file pointer as if by
std::fseek(file, 0, whence).Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
openmode аргумент, требуется подпись функции базового класса , как правило, игнорируются, потому что std::basic_filebuf поддерживает только один файл положении.Оригинал:
The
openmode argument, required by the base class function signature, is usually ignored, because std::basic_filebuf maintains only one file position.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Параметры
| off | — | Относительное положение, чтобы установить положение индикатора .
Оригинал: relative position to set the position indicator to. Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. | ||||||||||||||||||||
| dir | — | определяет базовые позиции, чтобы применить относительное смещение. Это может быть одной из следующих констант:
Оригинал: defines base position to apply the relative offset to. It can be one of the following constants:
Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. | ||||||||||||||||||||
| which | — | определяет, какие из входных и / или выходных последовательностей повлиять. Это может быть одним или комбинацией следующих констант:
Оригинал: defines which of the input and/or output sequences to affect. It can be one or a combination of the following constants:
Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. | ||||||||||||||||||||
Возвращаемое значение
недавно построенный объект типа
pos_type который хранит полученную позицию в файле, или pos_type(off_type(-1)) на провал.Оригинал:
A newly constructed object of type
pos_type which stores the resulting file position, or pos_type(off_type(-1)) on failure.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Заметки
seekoff() называют std::basic_streambuf::pubseekoff, которая называется std::basic_istream::seekg, std::basic_ostream::seekp, std::basic_istream::tellg, и std::basic_ostream::tellpОригинал:
seekoff() is called by std::basic_streambuf::pubseekoff, which is called by std::basic_istream::seekg, std::basic_ostream::seekp, std::basic_istream::tellg, and std::basic_ostream::tellpТекст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Пример
Запустить этот код
#include <iostream>
#include <fstream>
#include <locale>
int main()
{
// prepare a 10-byte file holding 4 characters in UTF8
std::ofstream("text.txt") << u8"z\u00df\u6c34\U0001d10b"; // or u8"zß水𝄋"
// or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9d\x84\x8b";
// open using a non-converting encoding
std::ifstream f1("text.txt");
std::cout << "f1's locale's encoding() returns "
<< std::use_facet<std::codecvt<char, char, std::mbstate_t>>(f1.getloc()).encoding() << '\n'
<< "pubseekoff(3, beg) returns " << f1.rdbuf()->pubseekoff(3, std::ios_base::beg) << '\n'
<< "pubseekoff(0, end) returns " << f1.rdbuf()->pubseekoff(0, std::ios_base::end) << '\n';;
// open using UTF-8
std::wifstream f2("text.txt");
f2.imbue(std::locale("en_US.UTF-8"));
std::cout << "f2's locale's encoding() returns "
<< std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(f2.getloc()).encoding() << '\n'
<< "pubseekoff(3, beg) returns " << f2.rdbuf()->pubseekoff(3, std::ios_base::beg) << '\n'
<< "pubseekoff(0, end) returns " << f2.rdbuf()->pubseekoff(0, std::ios_base::end) << '\n';
}
Вывод:
f1's locale's encoding() returns 1
pubseekoff(3, beg) returns 3
pubseekoff(0, end) returns 10
f2's locale's encoding() returns 0
pubseekoff(3, beg) returns -1
pubseekoff(0, end) returns 10
См. также
Вызывает seekoff()Оригинал: invokes seekoff()Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public функция-элемент std::basic_streambuf)
| |
[virtual] |
перемещает позицию файла, используя абсолютную адресацию Оригинал: repositions the file position, using absolute addressing Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (virtual protected функция-элемент) |
перемещает индикатор позиции файла в определенное место в файле Оригинал: moves the file position indicator to a specific location in a file Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) |