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

Разделение слова на буквы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Leonman
 Аватар для Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
07.10.2012, 19:28     Разделение слова на буквы #1
Всем доброго времени суток.
У меня возник вопрос. Допустим у есть переменная X типа string, в которую записано слово, "Code". Как мне разделить это слово на буквы? При этом что-бы можно было произвести подсчёт количества каждой буквы, то есть: C - 1, O - 1, D - 1, E - 1, таким образом.
Надеюсь на вашу помощь.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
07.10.2012, 20:07     Разделение слова на буквы #2
Можно через нотацию обычного массива, а лучше через алгоритм count
C++
1
2
3
4
5
6
7
8
9
10
11
string x = "CodeCd";
int countOfC = 0;
int countOfd = 0;
for (int i = 0; i<x.size(); i++)
{
    if (x[i] == 'C') countOfC++;
    if (x[i] == 'd') countOfd++;
}
cout<<"C = "<<countOfC<<"\nd = "<<countOfd<<endl;
cout<<"C = "<<count(x.begin(), x.end(), 'C');
cout<<"\nd = "<<count(x.begin(), x.end(), 'd');
wtf?
19 / 19 / 0
Регистрация: 03.10.2010
Сообщений: 48
07.10.2012, 20:08     Разделение слова на буквы #3
Просто после имени строки используй оператор []
C++
1
2
3
4
5
    string line = "Hello World";
    cout << line[0];// Выведется буква 'H'
    cout << line[1];// Выведется буква 'e'
    cout << line[2];// Выведется буква 'l'
    ...
Leonman
 Аватар для Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
07.10.2012, 20:23  [ТС]     Разделение слова на буквы #4
yuron_477, У меня такая ситуация, что изначально слово не задано, оно задаётся пользователем уже непосредственно в командной строке.
wtf?
19 / 19 / 0
Регистрация: 03.10.2010
Сообщений: 48
07.10.2012, 20:51     Разделение слова на буквы #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
string x;
int countOfC = 0;
int countOfd = 0;
getline( cin, x);
for (int i = 0; i<x.size(); i++)
{
    if (x[i] == 'C') countOfC++;
    if (x[i] == 'd') countOfd++;
}
cout<<"C = "<< countOfC<<"\nd = "<<countOfd<<endl;
cout<<"C = "<< count(x.begin(), x.end(), 'C');
cout<<"\nd = "<< count(x.begin(), x.end(), 'd');
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
07.10.2012, 20:52     Разделение слова на буквы #6
Копируете аргумент командной строки в string и далее работаете с ней:
C++
1
string x = argv[1];
Leonman
 Аватар для Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
07.10.2012, 21:24  [ТС]     Разделение слова на буквы #7
yuron_477, Огромное спасибо!

Добавлено через 6 минут
Вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
int main(int argc, char *argv[])
{  
  string x = argv[0];
  int countOfC = 0;
  cin >> x;
  for (int i = 0; i < x.size(); i++)
   if (x[i] == 'c' || x[i] == 'C') 
    countOfC++; 
 
   cout << "C = " << countOfC << endl;    
system("PAUSE >> null");  
}
А что если вводятся с консоли два слова, а не одно:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int main(int argc, char *argv[])
{  
  string x = argv[0];
  string y = argv[?];
  int countOfC = 0, countOfD = 0;
  cin >> x;
  cin >> y;
  for (int i = 0; i < x.size(); i++)
   if (x[i] == 'c' || x[i] == 'C') 
    countOfC++;
  for (int i = 0; i < y.size(); i++)
   if (x[i] == 'd' || x[i] == 'D') 
    countOfD++; 
   cout << "C = " << countOfC << endl;   
   cout << "D = " << countOfD << endl; 
system("PAUSE >> null");  
}
Что должно стоять вместо вопросительного знака string y = argv[?]
Если я пишу так: string y = argv[1], то у меня консоль показывается на секунду и тут же исчезает.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.10.2012, 21:26     Разделение слова на буквы #8
а лучше через алгоритм count
А еще лучше std::map<char, std::size_t>
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2012, 22:07     Разделение слова на буквы
Еще ссылки по теме:

C++ Разделение произвольного текста на слова
C++ Токенизация, разделение текста на слова
C++ Символьные строки. Разделение на слова

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

Или воспользуйтесь поиском по форуму:
Leonman
 Аватар для Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
07.10.2012, 22:07  [ТС]     Разделение слова на буквы #9
soon, Ну это не мой случай
Yandex
Объявления
07.10.2012, 22:07     Разделение слова на буквы
Ответ Создать тему
Опции темы

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