C ++ vfwscanf () - C ++ стандартна библиотека

Функцията vfwscanf () в C ++ се използва за четене на широк символен низ от файлов поток.

Функцията vfwscanf () е дефинирана в заглавния файл.

vfwscanf () прототип

 int vfwscanf (ФАЙЛ * поток, const wchar_t * формат, va_list vlist);

Функцията vfwscanf () чете данните от потока на файловия поток и съхранява стойностите в съответните местоположения, както е дефинирано от vlist.

vfwscanf () Параметри

  • stream: Въведете поток от файлове, от който да четете данните.
  • формат: Указател на завършен с нула край на символен низ, който указва как да се чете въведеното. Състои се от спецификатори на формат, започващи с%.
    Форматният низ има следните части:
    • Небели символи с изключение на%, всеки от които консумира по един идентичен знак от входния поток. Това може да доведе до неуспех на функцията, ако следващият символ в потока не се сравнява равен.
    • Пробел: Всички последователни пробели се третират като единични пробели. Освен това „ n“, „ t“ и „“ се считат за еднакви.
    • Спецификация на преобразуването: Той следва следния формат:
      • Първоначален% знак, който определя началото
      • По избор *, наречен знак за потискане на заданието. Ако този знак присъства, vfwscanf () не присвоява резултата на нито един аргумент за получаване.
      • Незадължително положително цяло число, което указва максималната ширина на полето. Той определя максималния брой знаци, които vfwscanf () е разрешено да използва, когато извършва преобразуването, посочено от текущата спецификация на преобразуване.
      • Незадължителен модификатор на дължина, указващ размера на приемащия аргумент.
      • Спецификатор на формат за преобразуване.
    Спецификатори на формата
    Форматизатор Описание
    % Съвпада с буквалния%
    ° С Съвпада с един или няколко знака. Ако ширината е дефинирана, съвпада точно с ширината.
    с Съвпада с последователни символи без интервали. Ако ширината е дефинирана, съвпада точно с символите за ширина или докато не бъде намерено първото празно пространство.
    (комплект) Съответства на непразна последователност от символи от дадения набор от символи. Ако присъства в началото на набора, тогава всички символи, които не са в набора, са съвпадащи.
    д Съответства на десетично цяло число.
    i Съвпада с цяло число.
    o Съответства на неподписано осмично цяло число.
    X или x Съответства на неподписано шестнадесетично цяло число.
    u Съответства на неподписано цяло десетично число.
    A или a, E или e, F или f, G или g Съвпада с число с плаваща запетая.
    н Връща броя на прочетените до момента знаци.
    стр Съответства на дефинирана от изпълнение последователност от символи, дефинираща указател.

    Така че общият формат на спецификатора на формата е:
     Спецификатор% (*) (width) (length)
  • vlist: Списък с аргументи за получаване на входовете.

vfwscanf () Върната стойност

  • При успех функцията vfwscanf () връща броя на аргументите, които са били успешно прочетени.
  • При неуспех EOF се връща.

Пример: Как работи функцията vfwscanf ()?

 #include #include #include #include void read( FILE *fp, const wchar_t* format,… ) ( va_list args; va_start (args, format); vfwscanf (fp, format, args); va_end (args); ) int main () ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t symbol() = L"u0915u0916u0917u0918u0919"; wchar_t names(5)(5) = (L"Ka", L"Kha", L"Ga", L"Gha", L"Nga"); FILE *fp = fopen("example.txt","w+"); for (int i=0; i<5; i++) fwprintf(fp, L"%lc %ls ", symbol(i), names(i)); rewind(fp); wchar_t ch, str(5); for (int i=0; i<5; i++) ( read(fp, L"%lc %ls ", &ch, str); wprintf(L"%lc - %ls", ch, str); ) fclose(fp); return 0; )

Когато стартирате програмата, възможният изход ще бъде:

 क - Ka ख - Kha ग - Ga घ - Gha ङ - Nga

Интересни статии...