как проверить на ‘\ t’?

У меня есть код, который читает в текстовом файле, и превращает каждое слово из файла в массив символов (должен быть массив символов, строки не допускаются), который является членом данных класса Word. При обнаружении пунктуации все объекты Word сохраняются в классе предложения в виде связанного списка. При обнаружении вкладки все предложения до этого сохраняются в классе Paragraph как связанный список. Что мне нужно помочь, так это способ проверить ‘\ t’ в текстовом файле. Я читаю в использовании

while(myFile >> charArray){
//stuff
}

Поскольку это читает в полном слове и сохраняет его в charArray, Если это конец предложения, charArray[size] (размер является последним элементом) == '.' || == "!" || == "?" так что я могу справиться с созданием нового предложения каждый раз (могу предположить, что текстовый файл будет каждый раз корректно форматироваться). Что я не знаю, как это сделать, так это проверить, нет ли символа ‘\ t’ для создания нового абзаца. Будут ли ‘\ t’ подобраны myFile >> charArray? Я пытался возиться с различными if заявления, чтобы увидеть, могу ли я подобрать символ ‘\ t’, но я не смог. Итак, как я могу проверить наличие вкладки при чтении из текстового файла в массив символов?

0

Решение

iostreams operator>> по умолчанию считывает и удаляет начальные пробелы. Включая ваш символ табуляции, который начинает новый абзац. Я предлагаю, чтобы пустая строка также считалась разделителем абзацев. И многие люди используют ряд обычных пробелов в начале строки для создания отступа вместо вкладки, так что вам следует это проверить.

Мой предпочтительный подход будет использовать getline читать всю строку текста, пробелы и все. Проверьте первый символ и решите, стоит ли начинать новый абзац. Затем загрузите эту строку в поток строк и используйте operator>> вытащить отдельные слова. Это очень похоже на комментарий Р. Саху … но я бы не разбивал строку на символах табуляции. Скорее, вас интересуют табуляции / пробелы только в начале строки.

Вы также можете поэкспериментировать с noskipws а также чтение отдельных пробельных символов

1

Другие решения

Это может помочь вам / быть тем, что вы ищете:

http://www.cplusplus.com/reference/cstring/strchr/

Вы заинтересованы в перегрузке, предоставляемой C ++:

char * strchr (char * str, int персонаж);

это вернет указатель на первое вхождение символа или нулевой указатель, если не найден.

Пример использования (также предоставленный Cplusplus.com) можно найти здесь:

/* strchr example */
#include <stdio.h>
#include <string.h>

int main ()
{
char str[] = "This is a sample string";
char * pch;
printf ("Looking for the 's' character in \"%s\"...\n",str);
pch=strchr(str,'s');
while (pch!=NULL)
{
printf ("found at %d\n",pch-str+1);
pch=strchr(pch+1,'s');
}
return 0;
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector