Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
fenix117
8 / 8 / 2
Регистрация: 16.03.2011
Сообщений: 249
1

Вектора и строки (простые вопросы новичка)

19.04.2011, 17:09. Просмотров 631. Ответов 2
Метки нет (Все метки)

#include <vector>
vector <string> A;
1)я не задаю кол-во строк вектора А, чем это чревато?
2)как мне вывести такой вектор,обычно я вывожу с помощью цикла, но я не знаю кол-во строк?
3)как происходит сравнение строк? как можно сравнивать буквы?
4)мне надо строку разбить на слова и занести в вектор. я кручу цикл и смотрю есть ли пробел. почти уверен есть более рациональный метод. подскажите плиз.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
vector <string> create (string s1)
{
    vector <string> A;
    string k;
    int nachalo_novogo_slova = 0;
    for ( int i=0 ; i < s1.length() ; i++)
    {
        if (s1[i]==' ')
        {
            k.assign( s1, nachalo_novogo_slova, i-1 );
            A.push_back (k);
            k.clear();
            nachalo_novogo_slova = i+1;
        }
    }
    return A;
}
5)после слова могут быть разные символы и несколько пробелов. Как от этого избавлятся?

Заранее благодарствую.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2011, 17:09
Ответы с готовыми решениями:

вопросы новичка
)Значение литерала 7.0Е-3 2)Логическая ошибка (ошибка реализации алгоритма)...

Вопросы от новичка по C++
1)В С++ можно делить с остатком только вещественные числа? К примеру: int...

Вопросы от новичка.
Всем доброго времени суток, уважаемые форумчане. Мне 12 лет. Собираюсь...

Очень тупые вопросы новичка
Хочу попытаться что-нибудь спрограммировать для авиасимулятора X-plane. Там,...

вопросы от новичка помогите прошк вас!))
)Значение литерала 7.0Е-3 2)Логическая ошибка (ошибка реализации алгоритма)...

2
asics
Freelance
Эксперт С++
2858 / 1793 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
19.04.2011, 19:02 2
Цитата Сообщение от fenix117 Посмотреть сообщение
1)я не задаю кол-во строк вектора А, чем это чревато?
Нельзя будет юзать оператор [] для ввода елементов, то бишь такая запись не корректна
C++
1
2
3
std::vector<int> a;
for(int i = 0; i < 10; ++i)
  std::cin >> a[i];
Цитата Сообщение от fenix117 Посмотреть сообщение
2)как мне вывести такой вектор,обычно я вывожу с помощью цикла, но я не знаю кол-во строк?
a.size() - это и будет количество елементов.
Цитата Сообщение от fenix117 Посмотреть сообщение
3)как происходит сравнение строк?
Здесь посмтори одну из реализаций функции strcmp().
Цитата Сообщение от fenix117 Посмотреть сообщение
как можно сравнивать буквы?
Операторами: < != > и тд.
Цитата Сообщение от fenix117 Посмотреть сообщение
4)мне надо строку разбить на слова и занести в вектор. я кручу цикл и смотрю есть ли пробел. почти уверен есть более рациональный метод. подскажите плиз.
C++
1
2
3
4
5
#include <sstream>
//...
std::istringstream ist(str);
while(ist >> str)
  a.push_back(str);
При условие, что разделителями являються пробелы.
Цитата Сообщение от fenix117 Посмотреть сообщение
5)после слова могут быть разные символы и несколько пробелов. Как от этого избавлятся?
Можно зделать как-то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <sstream>
#include <vector>
#include <string>
#include <algorithm>
#include <cctype>
 
int main(){
  std::string str("bla,   wtf? fjas."), tmp;
  std::vector<std::string> a;
  std::replace_if(str.begin(), str.end(), ispunct, ' ');//Заменяем знаки пунктуцации на пробелы
  std::istringstream ist(str);
  while(ist >> tmp)
    a.push_back(tmp);
  for(size_t i = 0; i < a.size(); ++i)
    std::cout << a[i] << ' ';
  return 0;
}
1
Mr.X
Эксперт С++
3183 / 1710 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
20.04.2011, 11:38 3
Цитата Сообщение от fenix117 Посмотреть сообщение
я кручу цикл и смотрю есть ли пробел. почти уверен есть более рациональный метод
И этот метод состоит в использовании алгоритмов (они заменяют циклы):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
#include <vector>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string         T_str;
typedef std::vector<T_str>  T_strings;
/////////////////////////////////////////////////////////////////////////////////////////
T_strings  get_strings_vector(const T_str&  s)
{
    T_strings  res;
    std::istringstream  ssin(s);
    std::copy( std::istream_iterator<T_str>(ssin), 
               std::istream_iterator<T_str>(),
               std::back_inserter(res) );
 
    return  res;
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));   
    std::cout << "Введите строку слов на латинице, "
                 "разделенных различными пробельными символами: "
              << std::endl;
 
    T_str  s;
    getline(std::cin, s);
 
    T_strings  strings = get_strings_vector(s);
    std::copy(strings.begin(), strings.end(), 
              std::ostream_iterator<T_str>(std::cout, "\n"));
    std::cout << std::endl;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2011, 11:38

вопросы от новичка!помогите пройти тест!!!
Результат работы фрагмента программы int x = 10; do { cout&lt;&lt; x &lt;&lt;&quot;\t&quot; ; x...

Вывод строки из вектора
Как вывести на экран строку, которая находится в векторе? #include &lt;cmath&gt;...

Удаление строки из вектора
Доброе утро. Есть 2 вектора типа string. Подскажите как удалить найденные...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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