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

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

Восстановить пароль Регистрация
 
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
19.04.2011, 17:09     Вектора и строки (простые вопросы новичка) #1
#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)после слова могут быть разные символы и несколько пробелов. Как от этого избавлятся?

Заранее благодарствую.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2011, 17:09     Вектора и строки (простые вопросы новичка)
Посмотрите здесь:

Очень тупые вопросы новичка C++
C++ вопросы новичка
C++ вопросы от новичка помогите прошк вас!))
C++ Вопросы от новичка по C++
C++ вопросы от новичка!помогите пройти тест!!!
C++ Вопросы от новичка.
Как научиться создавать на C++ простые приложения (очень простые игры)? C++
Удаление строки из вектора C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
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;
}
Mr.X
Эксперт С++
 Аватар для Mr.X
2797 / 1573 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
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;
}
Yandex
Объявления
20.04.2011, 11:38     Вектора и строки (простые вопросы новичка)
Ответ Создать тему
Опции темы

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