Перейти к содержимому

Как узнать количество символов в строке c

  • автор:

Типы данных

Строки Прежде чем пользоваться строковыми операциями и вообще иметь возможность описывать переменные типа string необходимо включить в заголовок программы описание:

Также во всех примерах предполагается, что в начале программы подключено пространство имен std:
using namespace std;
Описание строки полностью аналогично описанию любой другой переменной. Например:
string example_str;

  • Присваивание
  • Сравнение
  • Ввод
  • Запрос длины строки (size, length)
  • Соединение (+)
  • Удаление фрагмента (erase)
  • Вставка фрагмента (insert)
  • Копирование фрагмента (substr)
  • Поиск фрагмента (find)
  • Преобразование к числу (sscanf, sstream)
  • Преобразование числа к строке (sprintf, sstream)
  • Строка как массив символов
  • Примечание(*)

Присваивание строк

Примеры с комментариями:

string example_str = «Do bats eat cats?»; // присваивание при описании example_str = «»; // присваивание пустой строки — // две кавычки рядом, без пробелов work_str = example_str; // присваивание между строками

Помимо этого возможно вот такое присваивание:

char a[50]; example_str = a;

Сравнение строк

Две строки равны друг другу, если у них одинаковые длины и символы на соответствующих местах полностью совпадают (то есть 1-й символ строки A равен 1-му символу строки B, 2-й символ строки A равен 2-му символу строки B и так далее)

Например строка «abc» равна строке «abc», но не равна строке «abcd».

Выяснение какая из строк больше выполняется посимвольно, аналогично алфавитному порядку русского языка. Если строка начинается с символа, чей код больше, что и сама строка больше. Если первые символы одинаковы, то сравниваются вторые символы по тому же правилу. Если и они одинаковы, сравниваются третьи и так далее. Если в процессе сравнения какая-то из строк закончилась, то она меньше другой.

Строку также можно сравнивать с пустой (обозначается двумя кавычками подряд, без пробелов).

while (example_str != «») < // какие-то команды >

Для ввода строк рекомендуется использовать функцию getline(). Данная функция читает строку целиком (с пробелами и прочими символами) до знака перевода строки.

getline(cin, example_str);

Длина строки

Функции size() или length() возвращают целое число — количество символов, которое сейчас находится в строке.

example_str = «Password»; int x = example_str.size(); // после этого фрагмента x = 8
example_str = «»; if (example_str.length() > 0) < // команды этого блока сейчас не выполнятся, // так как длина пустой строки равна 0 >;

Соединение строк

Операция + возвращает строку, получившуюся в результате соединения (дописывания одной строки после конца другой) одной или более строк. Строки соединяются в том порядке, как они указаны в операции.

example_str = «password»; article = «The » comment_str = «anyone can guess it.» example_str = article + example_str + » is so simple, so » + comment_str; // example_str = «The password is so simple, so anyone can guess it.»

Удаление фрагмента

Функция erase() удаляет указанный фрагмент строки (если это возможно). Первым параметром указывается начальный символ (с него начнется удаление), вторым — количество символов. Символы в строке нумеруются, начиная с 0.

example_str = «The star is so distant»; example_str.erase(3, 6); // example_str = «Theis so distant» // будет удалено слово star вместе с обоими пробелами

example_str = «The star is so distant»; example_str.erase(3, 80); // example_str = «The» // будет удалено столько символов, сколько возможно

Вставка фрагмента

С помощьью функции insert() можно добавить заданный фрагмент в любое место строки. Первым параметром функции является номер начальной позиции для фрагмента (нумерация начинается с 0), вторым — фрагмент. Функция изменяет исходную строку.

example_str = «123456»; example_str.insert(3, «+»); // теперь example_str = «123+456»

Копирование фрагмента

Функция substr() возвращает фрагмент строки (который тоже является строкой). Первым параметром указывается номер начального символа, вторым — количество. Символы нумеруются, начиная с 0. Функция не оказывает влияния на исходную строку.

example_str = «Do bats eat cats?»; new_str = example_str.substr(3, 5); // new_str = «bats » // будет скопировано слово «bats» вместе с последуюшим пробелом

example_str = «Do bats eat cats?»; new_str = example_str.substr(12, 100); // new_str = «cats?» // в строке нет 100 символов, поэтому будет скопировано сколько есть

Поиск фрагмента

С помощью функции find() можно определить, встречается ли данный фрагмент в строке. Функция возвращает специальное значение string::npos, если фрагмент не найден или номер первого (начиная слева) места, откуда начинается подобный фрагмент

example_str = «comandante@cia.dark.org»; x = example_str.find(«z»); // в этом примере x равно string::npos, // так как в строке нет ни одной буквы z

example_str = «comandante@cia.dark.org»; x = example_str.find(«a»); // в этом примере x равно 3, // символов «а» в строке несколько, но find // вернет номер только для первого слева

example_str = «comandante@cia.dark.org»; if (example_str.find(«te») != string::npos) < // команды этого блока выполнятся, так как // в строке есть фрагмент "te" >

Преобразование к числу

1. Ввод/вывод в stringstream. Требуется создать специальный поток ввода/вывода, который будет вводить или выводить данные в некоторый буффер в памяти. При этом операции будут сходны со стандартным вводом/выводом.

#include stringstream container; // создали специальный поток ввода/вывода, // который «работает» в некоторой области памяти string data = «918»; int x; container.clear(); // на случай, если в container что-то лежало, чтобы // случайно не попало в результат преобразования container > x; // достаем из потока это же число в виде int

2. Функция sscanf() (scan from string as fromatted). Данная функция также из обычного C (не C++) поэтому «умеет» работать только с символьными массивами. В грубом приближении у функции 3 параметра: символьный массив, строка формата и переменная (или переменные), куда следует поместить результаты преобразования.

#include string some_value = 825; x = sscanf(some_value.data(), «%d», &x); // в x записано число типа int, извлеченное из строки // функция data() позволяет получить символьный массив // в формате языка C (не C++), с таким же содержанием, // что и строка

Преобразование числа к строке

1. Ввод/вывод в stringstream. Требуется создать специальный поток ввода/вывода, который будет вводить или выводить данные в некоторый буффер в памяти. При этом операции будут сходны со стандартным вводом/выводом.

#include #include #include using namespace std; stringstream container; // создали специальный поток ввода/вывода, // который «работает» в некоторой области памяти string data; int x = 16; container.clear(); // объясняем потоку, что в нем нет данных // чтоб не получить при чтении то, что не клали туда сами container > data; // достаем из потока это же число в виде строки

2. sprintf() (print formatted to string). Эта функция также является функцией из стандартного C, и тоже работает только с массивами из char). Параметры (вкратце): символьный массив, куда будет выведен результат, строка формата, данные.

Подробнее про строку формата см. например, здесь.

#include #include #include int x; string s; char z[100]; x = 92; sprintf(z, «%d», x); s = z;

Строка как массив символов

Строку можно рассматривать как массив символов и применять к ней методы работы, как с массивом.

Developing.ru

Как подсчитать колличество одинаковых символов в строке

4 сообщения • Страница 1 из 1
qwertyuiop Сообщения: 75 Зарегистрирован: 24 мар 2005, 11:00

Нужно вывести таблицу,в которой будет так: символ «такой то» встречается «n» раз,следуящая строка — другой символ,ну ,вобщем ясно наверное.
Подскажите плиз саму идеологию,т.е. с чего начать,какими методами,и чем закончить. Что использовать.

Yurich Сообщения: 104 Зарегистрирован: 23 фев 2004, 19:07

«Идеология» проста. Идешь простым циклом по строке. Считываешь очередной символ, занося его в массив (лучше всего std::map) по след. правилу:
если такой символ уже присутствует в массиве, то просто инкриментируешь значение yourmap[yourchar], иначе заносишь его в массив с значение 1.

После этого пробегаешь по своему массиву (по желанию его можно отсортировать) и выводишь пару «ключ — значение».

WinMain Сообщения: 913 Зарегистрирован: 14 янв 2005, 10:30 Откуда: Москва Контактная информация:

Если я правильно понял, то в каждой отдельно взятой строке нужно посчитать количество букв одного конкретного символа. Здесь ничего сложного нет. Каждый символ строки сравниваешь с заданным, если он соответствует заданному символу. то переменную-счётчик увеличиваешь на 1.
Если тебе нужно сделать сводную таблицу результатов, то использование map в данном случае выглядит несколько громоздко. проще сделать так:

Задаёшь массив результатов с нулевыми значениями:

Потом в процессе работы каждый конкретный символ используешь в качестве индекса этого массива и присваиваешь данному элементу массива число этих символов в заданной строке.

Например, для символа ‘N’ количество X будет записано

Потом циклом просматриваешь массив nRes и каждых элемент, который будет больше 0, выводишь в текст результата.

Как узнать количество символов в строке?

Запись была обновлена

Всем известная функция 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 – возведение числа в степени
  • Chart – графики и диаграммы
  • StringGrid – таблица строк и столбцов

Количество символов в каждом слове предложения на C#

Доработаем этот проект по Вашим требованиям, напишите подробности нам в Телеграм

Количество символов в каждом слове предложения на C#

Программа разбивает входящую строку на слова и находит длинну каждого слова. Для разбития строки на слова используется метод расширения Split, который разбивает входную строку по пробелам и исключает пустые вхождения. Узнать количество символов в строке можно с помощью свойства Length.

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LettersInTheWords < class Program < static void Main(string[] args) < string input = Console.ReadLine(); // разбиваем предложения на слова (строки( foreach (string word in input.Split(new char[] < ' ' >)) < // выводим слово и его длинну в консоль Console.WriteLine(": ", word, word.Length); > > > >

Содержание архива. Во прикреленном архиве ты найдешь полный пример исходного кода на языке программирования C# в Visual Studio 2015.

  • Автор работы: dmytro
  • скачать файлы бесплатно

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *