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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 267
#1

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

07.10.2012, 19:28. Просмотров 1195. Ответов 8
Метки нет (Все метки)

Всем доброго времени суток.
У меня возник вопрос. Допустим у есть переменная X типа string, в которую записано слово, "Code". Как мне разделить это слово на буквы? При этом что-бы можно было произвести подсчёт количества каждой буквы, то есть: C - 1, O - 1, D - 1, E - 1, таким образом.
Надеюсь на вашу помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2012, 19:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разделение слова на буквы (C++):

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

Разделение строки на слова - C++
Текст в файле содержит числа, которые записаны в восьмеричной системе счисления. Преобразовать эти числа в десятичную систему счисления и...

Разделение строки на слова - C++
Подскажите пожалуйста, как разделить строку на отдельные слова. Заранее спасибо.

разделение строки на слова - C++
нужно разбить строку на слова (си) без использования библиотеки string.h (пользоваться можно только stdio.h) можно использовать...

Разделение произвольного текста на слова - C++
Пытаюсь разделить произвольный текст на отдельные слова. И присвоить каждое слово элементу структуры. Но когда программа проходит первую...

Символьные строки. Разделение на слова - C++
Помогите написать прогу. Не могу разобраться, какие команды применить. Так же нужно использовать отдельно функцию. В Файле находится...

8
DiffEreD
1431 / 768 / 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');
0
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'
    ...
0
Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 267
07.10.2012, 20:23  [ТС] #4
yuron_477, У меня такая ситуация, что изначально слово не задано, оно задаётся пользователем уже непосредственно в командной строке.
0
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');
0
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
07.10.2012, 20:52 #6
Копируете аргумент командной строки в string и далее работаете с ней:
C++
1
string x = argv[1];
1
Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 267
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], то у меня консоль показывается на секунду и тут же исчезает.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.10.2012, 21:26 #8
а лучше через алгоритм count
А еще лучше std::map<char, std::size_t>
0
Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 267
07.10.2012, 22:07  [ТС] #9
soon, Ну это не мой случай
0
07.10.2012, 22:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2012, 22:07
Привет! Вот еще темы с ответами:

Разделение строки на отдельные слова [С++] - C++
Надо разделить строку на отдельные слова. Использовать strtok() нельзя.

Токенизация, разделение текста на слова - C++
Здравствуйте, по заданию необходимо 1.Прочитать текст из первого файла. 2.Выделить словоформы и вписать их в отдельный двумерный...

Переставить все входящие буквы «а» в начало слова, а буквы «я» – в конец - C++
Привет! Нужно во всех словах строки S переставить все входящие буквы «а» в начало слова, а буквы «я» – в конец. Что-то не как не пойму...

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


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

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

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