Форум программистов, компьютерный форум CyberForum.ru

Проверить, пустая ли строка. (fstream) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.73
res
56 / 9 / 1
Регистрация: 05.04.2010
Сообщений: 143
17.09.2011, 02:21     Проверить, пустая ли строка. (fstream) #1
Добрый вечер, ув. форумчане.

Допустим есть пример:
C++
1
2
3
4
5
6
7
8
9
void main()
{
        char text[255]; 
 
    ofstream fout("test.txt", ios::app);
        cin.getline(text, 255);
    fout << text << "\n";
    fout.close();
}
Как мне проверить, пустая ли строка в которую записывается текст?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
17.09.2011, 08:23     Проверить, пустая ли строка. (fstream) #2
C++
1
*text ? не пустая : пустая
Если учитывать, что могут быть пробелы, то как-то так
C++
1
2
3
4
bool is_empty = true;
for ( int i = 0 ; text[i] && is_empty ; ++i)
   is_empty -= text[i] != ' ';
is_empty ? пустая : непустая
res
56 / 9 / 1
Регистрация: 05.04.2010
Сообщений: 143
18.09.2011, 01:04  [ТС]     Проверить, пустая ли строка. (fstream) #3
C++
1
2
1>.\main.cpp(16) : warning C4804: -=: небезопасное использование типа 'bool' в операции
1>.\main.cpp(16) : warning C4800: int: принудительно задано логическое значение 'true' или 'false' (предупреждение о производительности)
Добавлено через 2 минуты
Ваша процедура кажется не совсем правильная.
Ведь строку надо считать из файла, а не из консоля. (cin.getline(text, 255))
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
18.09.2011, 01:54     Проверить, пустая ли строка. (fstream) #4
Цитата Сообщение от res Посмотреть сообщение
Ведь строку надо считать из файла, а не из консоля. (cin.getline(text, 255))
ваш код вообще считывает массив из консоли, и записывает в файл.
тырц
res
56 / 9 / 1
Регистрация: 05.04.2010
Сообщений: 143
18.09.2011, 02:59  [ТС]     Проверить, пустая ли строка. (fstream) #5
Вы мою задачу кажется не поняли.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
18.09.2011, 03:06     Проверить, пустая ли строка. (fstream) #6
Цитата Сообщение от res Посмотреть сообщение
Как мне проверить, пустая ли строка в которую записывается текст?
C++
1
2
3
4
5
6
7
char text[255]; 
text[0] = '\0'; 
ofstream fout("test.txt", ios::app);
cin.getline(text, 255);
if (strlen(text))        
   fout << text << "\n";
fout.close();
res
56 / 9 / 1
Регистрация: 05.04.2010
Сообщений: 143
18.09.2011, 03:39  [ТС]     Проверить, пустая ли строка. (fstream) #7
kazak,
пустая ли строка в которую записывается текст
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
18.09.2011, 04:36     Проверить, пустая ли строка. (fstream) #8
C++
1
2
3
4
char text[255]; 
text[0] = '\0'; 
if (!strlen(text)) 
   cin.getline(text, 255);
Добавлено через 13 минут
Хотя в принципе strlen здесь лишний, в данном случае достаточно проверить нулевой элемент на ноль.
res
56 / 9 / 1
Регистрация: 05.04.2010
Сообщений: 143
18.09.2011, 04:58  [ТС]     Проверить, пустая ли строка. (fstream) #9
Наверное я объяснять не умею
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    
        bool is_empty = true;
    char text[255]; 
 
    ifstream fin("test.txt");
        if(!fin.is_open())
            return;
 
    fin.getline(ch, 255);
    for(int i=0; i<255; ++i)
    {
        if(text[i]!= ' ')
            is_empty = false;
    }
    fin.close();
Во пытался проверить строку на отсутствие символов, не получилось.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
18.09.2011, 05:18     Проверить, пустая ли строка. (fstream) #10
Пустая строка в смысле из одних пробелов?

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool IsEmpty(char *str)
{
   int ch;
   
   for (int i = 0; str[i]; i++)
   {
      ch = (int)str[i];
      if (!isspace(ch))
         return false;
   }
   
   return true;
}
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
18.09.2011, 05:19     Проверить, пустая ли строка. (fstream) #11
Цитата Сообщение от res Посмотреть сообщение
Во пытался проверить строку на отсутствие символов, не получилось.
почему же н е получилось? все получилось, Вы проверили строку на наличие пробелов, т.е. символа ' '
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2011, 07:00     Проверить, пустая ли строка. (fstream)
Еще ссылки по теме:

Пустая строка против строки нулевой длины C++
Пустая строка в функции C++
C++ Построчное чтение из файла, в токором первая строка пустая

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
18.09.2011, 07:00     Проверить, пустая ли строка. (fstream) #12
Цитата Сообщение от res Посмотреть сообщение
Ваша процедура кажется не совсем правильная.
Это предупреждения, а не ошибки. В данном случае ничего опасного нету.

Цитата Сообщение от res Посмотреть сообщение
Ведь строку надо считать из файла, а не из консоля. (cin.getline(text, 255))
Да хоть сами заполняйте, я привел фрагмент кода, в котором проверяется, пустая ли строка.
Yandex
Объявления
18.09.2011, 07:00     Проверить, пустая ли строка. (fstream)
Ответ Создать тему
Опции темы

Текущее время: 05:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru