Как узнать количество символов в строке?
Всем известная функция strlen не обошла стороной и C++, которая призвана определить количество символов в строке типа char.
char str[256] = "Здесь будет какой-то текст от cubook.pro"; Label1->Caption = strlen(str); // => 40
Размер строки в C++ Builder
В C++ Builder есть удобная функция Length(), которая позволяет определить количество символов в строке типа String.
AnsiString str = "Здесь будет какой-то текст от cubook.pro"; Label1->Caption = str.Length(); // => 40
Поделиться
Подготовил материал
Табаков Юрий
Программист
Автор и редактор проекта CuBook.PRO. Главная задача, которую я ставлю перед собой – донести до начинающих программистов удобочитаемый материал. Буду рад выслушать замечания и предложения. Не забываем ставить оценки и делать репосты =)
Минутка юмора
Едет программист на машине, торопится. Обгоняя выходит на встречную, и видя Камаз на пути громко начинает орать: — «Эскейпт, Эскейпт!». Очухался, и видя вокруг себя облака, облегчённо: — «Ладно, хоть засейвился.»
Самое интересное
- Log – натуральный логарифм
- ShellExecute – открыть папку или приложение
- Pow – возведение числа в степени
- StringGrid – таблица строк и столбцов
- Chart – графики и диаграммы
Посчитать количество символов в строке
Хелп. Я только недавно начал изучать С++. Помогите сделать программу. Нужно посчитать количество всех элементов в строке.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Посчитать количество символов в строке
Объясните как работает этот код. Он должен посчитать количество каждой буквы и вывести в порядке.
Посчитать количество символов в строке
Задание: Дана строка. Подсчитать количество различных символов, которые не являются буквами или.
В строке посчитать количество разных символов
Хелоу гайс,как изменить код, чтобы считались именно разные символы , а не все? #include <iostream>.
Посчитать в строке количество латинских символов
Запросить у пользователя строку и посчитать в ней количество символов латинского алфавита
Регистрация: 11.06.2008
Сообщений: 56
Сообщение от kuidreS
Хелп. Я только недавно начал изучать С++. Помогите сделать программу. Нужно посчитать количество всех элементов в строке.
1 2 3 4 5
#include . char* str = "Hello World"; int count = strlen(str); printf("Количество символов в строке \"Hello World\" = %u\n", count);
2021 / 1620 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#include int strLength(const char* str) { int size = 0; while(*str++) ++size; return size; } int main() { const char* str = "asdasdqwdqd"; printf( "%d\n", strLength(str) ); return 0; }
Регистрация: 28.03.2010
Сообщений: 37
Посмотрите пожалуйста и скажите где ошибка:
1 2 3 4 5 6 7 8 9 10 11 12 13
#include #include #include using namespace std; void main() { char *str; cout"Please, enter the string: "; cin>>str; int count = strlen(str); cout"Sum of elements= "count; getch(); }
Регистрация: 13.05.2010
Сообщений: 7
1 2 3 4 5 6 7 8 9 10 11 12 13
#include #include #include using namespace std; int main() { char *str; cout"Please, enter the string: "; cin>>str; int count = strlen(str); cout"Sum of elements= "count; getch(); return 0; }
Функция main() должна возвращать значение типа int.
Регистрация: 11.06.2008
Сообщений: 56
Сообщение от kuidreS
Посмотрите пожалуйста и скажите где ошибка
В Вашем случае надо выделить свободную память для указателя, определив его размер:
1 2 3 4 5 6 7 8
char* str = new char[80]; cout "Please, enter the string: "; cin >> str; int count = strlen(str); cout "Sum of elements= " count; getch(); delete [] str; return;
Добавлено через 2 минуты
Сообщение от tony733
Функция main() должна возвращать значение типа int.
Необаязательно. Она может возвращать и void.
Но в конец программы нужно вставить ключевое слово
return
Регистрация: 13.05.2010
Сообщений: 7
Сообщение от kuidreS
Посмотрите пожалуйста и скажите где ошибка:
1 2 3 4 5 6 7 8 9 10 11 12 13
#include #include #include using namespace std; void main() { char *str; cout"Please, enter the string: "; cin>>str; int count = strlen(str); cout"Sum of elements= "count; getch(); }
Сообщение от Cooler2
В Вашем случае надо выделить свободную память для указателя, определив его размер:
1 2 3 4 5 6 7
char* str = new char[80]; cout "Please, enter the string: "; cin >> str; int count = strlen(str); cout "Sum of elements= " count; getch(); delete [] str;
насколько я понимаю при такой операции память выделится вот здесь
cin>>str;
Добавлено через 3 минуты
Сообщение от Cooler2
Необаязательно. Она может возвращать и void.
Но в конец программы нужно вставить ключевое слово
Ну можно наверно, не спорю, но вроде как стандартнее записать int) Хотя не буду особо спорить, возможно я неправ)
12243 / 7373 / 1734
Регистрация: 25.07.2009
Сообщений: 13,521
Сообщение от tony733
насколько я понимаю при такой операции память выделится вот здесь
cin>>str;
Не правильно понимаете. Ничего тут не должно выделяться. Мало того, при таком подходе, если память и выделена, но меньше, чем вводимая строка, будет переполнение.
Регистрация: 11.06.2008
Сообщений: 56
kuidreS,
Рекомендую вместо
cin >> str;
Воспользоваться функцией получения всей введенной строки:
cin.getline(str, 80, '\n');
Где str — указатель под который выделена память в свободном хранилище,
80 — максимальное количество символов для прочтения
‘\n’ — символ, прекращающий процесс считывания строки. (Тут можно не только этот символ использовать).
Регистрация: 13.05.2010
Сообщений: 7
Сообщение от easybudda
Не правильно понимаете. Ничего тут не должно выделяться. Мало того, при таком подходе, если память и выделена, но меньше, чем вводимая строка, будет переполнение.
Спасибо за разъяснение, терь буду знать) раз уж начали разговор- не могли бы вы посмотреть вот это?
https://www.cyberforum.ru/cpp-. 29329.html
Регистрация: 27.05.2010
Сообщений: 9
и наконец окончательный вариант:
1 2 3 4 5 6 7 8 9 10 11 12 13
#include #include #include using namespace std; void main() { char* str = new char[80]; cout"Please, enter the string: "; cin.getline(str, 80, '\n'); int count = strlen(str); cout"Sum of elements= "count; getch(); }
Регистрация: 21.03.2015
Сообщений: 3
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
#define _CRT_SECURE_NO_WARNINGS #include "stdafx.h" #include using namespace std; const int n = 80; void Strin(char[]); void main() { setlocale(LC_ALL, "RUS"); char str[n]; cout "enter string" endl; gets(str); Strin(str); system("pause"); } void Strin(char str[]) { int counter = 0; for (int i = 0; i n; i++) { if (isalnum(str[i])) { if (i != 0) { int k; for (k = i - 1; k != 0; k--) { if (str[i] == str[k]) break; } if (str[i] == str[k]) continue; } cout str[i] "="; for (int j = i + 1; j n - 1; j++) { if (str[i] == str[j]) { counter++; } } cout counter + 1 endl; counter = 0; } } }
Регистрация: 18.03.2015
Сообщений: 5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
# include # include using namespace std; int main() { char mas1[5]; cout"Vvedite stroku "; gets(mas1); coutendl; for(int i=0;i5;i++) coutmas1[i]; _getch(); return 0; }
не могу никак посчитать сколько символов в строке которую ввели
Добавлено через 53 минуты
нашол ответ )) #include
Добавлено через 4 минуты
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
# include # include #include using namespace std; int main() { setlocale(LC_ALL, "RUS"); char mas1[100]; char len; cout"Vvedite stroku "; gets(mas1); coutendl; len = strlen(mas1); for(int i=0;ilen;i++) { coutmas1[i]; } _getch(); return 0; }
Подсчет символов, строк и слов
Программа считает количество введенных пользователем символов, строк и слов. Чтобы программа корректно закончила работу и правильно посчитала, после набора строк надо перейти на новую строку, после чего нажать Ctrl + D (по крайней мере в терминале Linux).
#include int main() < char ch, flag=-1; unsigned c=0; // символы unsigned w=0; // слова unsigned n=0; // строки while ((ch = getchar()) != EOF) < if (ch == '\n') n++; else c++; if (ch == ' ' || ch == '\n') flag = -1; else if (flag == -1) < flag = 1; w++; >> printf("Символы: %u\n", c); printf(" Слова: %u\n", w); printf(" Строки: %u\n", n); >
one two three four Символы: 16 Слова: 4 Строки: 3
X Скрыть Наверх
Решение задач на языке C
Подсчитать количество слов в строке (Си)
Слово — последовательность символов, разделенных пробелами. Под пробелами тут будем понимать символ пробела (не табуляции или чего-то еще). Посчитать число пробелов (и групп пробелов) — неправильно. Ведь строка без пробелов может быть пустой, а может содержать одно слово. Строка с одним словом может содержать ноль пробелов, а также 1 или 2 группы пробелов (перед и после слова). Правильно — считать пары <группу пробелов> Решение будет таким: 1. Считаем с текущей (изначально нулевой) позиции в строке длину группы пробелов, прибавляем ее к текущей позиции. За счет этого группа «пропущена».
2. Считаем с текущей позиции длину группы непробельных символов ( word_length ).
3. Если word_length болшье нуля — увеличиваем счетчик слов. Прибавляем длину слова к текущей позиции — за счет этого слово «пропущено».
4. Процесс повторяется пока счетчик не станет больше длины строки. Ясно что подсчет пробелов и непробелов — это две разные функции, которые отличаются лишь оператором сравнения текущего символа. Красивое решение заключается в передаче этой функции в качестве параметра указателя на функцию сравнения. Функции сравнения при этом можно описать так:группу>
int is_space(char c) < return c == ' '; >int is_not_space(char c)
Имея их совсем несложно добавить к пробельным символам что-то еще — табуляции, короткие пробелы, переводы строки т.п. Функция подсчета тогда может быть описана так:
int count_start_if(char* str, int (*pred)(char)) < int count = 0; while (*str != 0) < if (pred(*str)) < count++; str++; >else break; > return count; >
Первым аргументом она принимает указатель, однако в качестве него может быть передана подстрока так: &str[i] — передаем часть строки, начиная с i -того символа. Исходный код программы целиком:
#include #include #include #include int is_space(char c) < return c == ' '; >int is_not_space(char c) < return 0 == is_space(c); >int count_start_if(char* str, int (*pred)(char)) < int count = 0; while (*str != 0) < if (pred(*str)) < count++; str++; >else break; > return count; > int count_words(char* str) < int length = strlen(str); int count = 0; int i = 0; while (1) < int spaces_count = count_start_if(&str[i], is_space); i += spaces_count; if (i >= length) < break; >int word_length = count_start_if(&str[i], is_not_space); if (word_length > 0) < count++; >i += word_length; if (i >= length) < break; >> return count; > int main()
Пример выполнения программы: