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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
4aineg
0 / 0 / 0
Регистрация: 07.08.2008
Сообщений: 23
#1

ворпос по поводу пробелов в строке - C++

14.08.2008, 10:48. Просмотров 1001. Ответов 1
Метки нет (Все метки)

А как мне в своем коде изменить чтобы вместо «_» при наборе предложения можно ставить пробелы, пытаюсь вводить через консоль с пробелами: выводит и работает только с одним словом

Код
#include <iostream>
  #include <cstring>
  using namespace std;
   
  class Line
  {
  private:
   
        char *Line1; 
        int length;
   
  public:
   
        Line()
        {
              length = 1;
              Line1 = new char[length];
              Line1[length-1] = '\0'; 
        }
   
      Line(const char* L1)
      {
            length = strlen(L1)+1;
          Line1 = new char[length];
          strcpy(Line1, L1);
              Line1[length-1] = '\0';
      }
   
      friend ostream& operator << (ostream& out , Line& l);
        friend istream& operator >> (istream & in, Line &l);
        Line operator - (char letter);
        bool operator == (Line l);
        int CountWordsInLine();
        char* ReverseLine(); 
        void DrawStar();
   
        ~Line()
        {
              delete [] Line1;
        }
  };
   
  int Line::CountWordsInLine()
        {
          int Count=0;
          for(int i=0; i<length; i++)
        {
          if (Line1[i]==' ')
              Count++;
        }
          Count++;
          return Count;
        }
   
  char* Line::ReverseLine() 
        {
          for (int i=0; i<(length-1)/2; i++)
        {
              char temp = Line1[i];
              Line1[i] = Line1[length-i-2];
              Line1[length-i-2] = temp;
        }
              return Line1;
        }
   
  void Line::DrawStar()
  {
        for (int i=0; i<45; i++)
              cout << '*';
        cout << endl;
  }
   
  istream & operator >> (istream & in, Line& l)
        {
              char *temper = new char[100];
              in >> temper;
              l.length = strlen(temper)+1;
              temper[l.length-1] = '\0'; 
              l.Line1 = new char[l.length];
              strcpy(l.Line1, temper);
              l.Line1[l.length-1] = '\0';
              return in;
        }
   
      ostream& operator << (ostream& out, Line& l)
        {
              return out << l.Line1;
        }
   
        Line Line::operator - (char letter)
        {
              char *temp = new char[length];
              int i,j;
              for (i=0, j=0; i<length; i++)
              {
                    if (Line1[i] != letter)
                    {
                          temp[j] = Line1[i];
                          j++;
                    }
              }
              temp[j] = '\0';
              return temp;
      }
   
        bool Line::operator == (Line l)
        {
              int i, j;
              for (i=0, j=0; i<length-1, j<length-1; i++, j++)
                    if (Line1[i] == l.Line1[j])
                          return true;
              return false;
        }
   
  int main()
  {
        Line ln1;
        Line ln2("What's up niger");
        cout << "enter sentence: "; 
        cin >> ln1;
        cout << "normal sentece: " << ln1 << endl;
   
        if(ln1 == ln2)
              cout << "sentences are equal" << endl;
        else
              cout << "sentences are not equal" << endl;
        cout << "number of words: " << ln1.CountWordsInLine() << endl;
        ln1.DrawStar();
        cout << "enter letter: ";
        char temp;
        cin >> temp;
        cout << "without letter: " << ln1 - temp << endl;
        cout << "reversed sentence: " << ln1.ReverseLine() << endl;
        
        return 0;
  }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2008, 10:48     ворпос по поводу пробелов в строке
Посмотрите здесь:

Удаление пробелов в строке - C++
вот такая задача надо что бы программа удаляла первый и последний пробел в строке. строку вводим мы сами. я вот написал что бы удаляла все...

Подсчет количества пробелов в строке - C++
Подсчет количества пробелов в строке s. Для этого нужно использовать функцию: int Words (s). Нельзя использовать библиотеку string.h... ...

Удаление пробелов в введенной строке - C++
Вот я думаю надо так,но не получается //Удаление пробелов в строке #include&lt;iostream&gt; #include&lt;cstring&gt; #define N 80 using...

Посчитать количество пробелов в строке - C++
Посчитать количество пробелов в строке

Подсчитать количество пробелов в строке - C++
Задание : Вводится строка. Подсчитать количество пробелов в строке. Не понимаю как мне счетчик завести. Нужно 2 варианта решения...

Подсчитать количество пробелов в строке - C++
Подсчитать количество пробелов в строке Через массив #include &lt;iostream&gt; using namespace std; int main() { char str; ...

Подсчитать количество пробелов в строке - C++
Подсчитать количество пробелов в строке. Добавлено через 3 минуты Я знаю что тут нужно будет пользоваться !isdigit чтобы не считало...

Подсчитать количество пробелов в строке - C++
Нужна помощь в создании программы Написать программу, которая принимает от пользователя одну или строки, в зависимости от...

Определить количество пробелов в строке - C++
Написать програму при помощи библиотеки String.h Дана строка S1.....Sn (n за ранее не известно) нужно: 1)определить количество пробелов...

Определить длину максимальной цепочки пробелов в строке - C++
Дана строка. Определить какова максимальной цепочки пробелов.


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,868
Завершенные тесты: 1
14.08.2008, 11:53     ворпос по поводу пробелов в строке #2
используй функцию getline в функции >>, потому что иначе она пишет до первого пробела...
типа так:
Код
  istream & operator >> (istream & in, Line& l)
        {
              char *temper = new char[100];
              in.getline(temper, 100);
              l.length = strlen(temper)+1;
              temper[l.length-1] = '\0'; 
              l.Line1 = new char[l.length];
              strcpy(l.Line1, temper);
              l.Line1[l.length-1] = '\0';
              return in;
        }
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru