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

Как заполнить массив строками с

  • автор:

C++. Массивы строк типа string . Примеры

В данной теме приводятся примеры решения наиболее распространенных задач с массивами строк типа string .

Поиск на других ресурсах:

1. Создание массива строк типа string . Статический и динамический массив строк

В старших версиях компиляторов чтобы работать с типом string нужно подключить модуль

#include

Для массива строк память можно выделять

  • статически. В этом случае указывается фиксированное константное значение массива на этапе компиляции;
  • динамически с помощью оператора new . В этом случае размер массива создается динамически и может задаваться в процессе выполнения программы.
2. Инициализация массива строк типа string . Пример

В примере инициализируется массив строк типа string . Память для массива выделяется статически (фиксированно).

#include #include using namespace std; void main() < // Массивы строк типа string // 1. Инициализация массива строк указанием размера массива const int N_DAYS = 7; string daysOfWeek[N_DAYS] = < «Sunday», «Monday», «Tuesday», «Wednesday», «Thirsday», «Friday», «Saturday» >; // Вывод массива строк на экран cout «Array of days:\n»; for (int i = 0; i < N_DAYS; i++) < cout "Day " << i " color: #008000;">// 2. Инициализация без указания размера массива string Numbers[] < «One», «Two», «Three» >; // Вывод массива на экран cout «\nArray of Numbers:» for (int i = 0; i

Результат работы программы

Array of days: Day 0 = Sunday Day 1 = Monday Day 2 = Tuesday Day 3 = Wednesday Day 4 = Thirsday Day 5 = Friday Day 6 = Saturday Array of Numbers: One Two Three
3. Пример создания динамического массива строк заданного размера

В программе с клавиатуры вводится размер массива n . Затем для этого массива выделяется память динамически.

#include #include using namespace std; void main() < // Массивы строк типа string // Создание динамического массива строк размера n // 1. Объявить массив строк string *AS; // указатель на тип string int n; // количество элементов в массиве AS // 2. Ввести размер массива cout "n color: #008000;"> // 3. Проверка на корректность ввода if (n <= 0) < cout "Wrong value of n." return; > // 4. Динамическое выделение памяти для массива AS AS = new string[n]; // 5. Заполнение массива AS произвольными значениями for (int i = 0; i < n; i++) AS[i] = (char)('1' + i); // 6. Вывод массива AS cout "\nArray AS:" for (int i = 0; i < n; i++) cout "AS[" << i "] color: #008000;">// 7. После завершения работы с массивом AS, // нужно обязательно освободить выделенную для него память delete[] AS; >

Результат выполнения программы

n = 7 Array AS: AS[0] = 1 AS[1] = 2 AS[2] = 3 AS[3] = 4 AS[4] = 5 AS[5] = 6 AS[6] = 7
4. Пример ввода строк с клавиатуры и формирование массива этих строк

В примере последовательно вводятся строки и формируется массив этих строк. Конец ввода – пустая строка «» .

#include using namespace std; void main() < // Массивы строк в C++. Строки типа string // Организация ввода строк с клавиатуры и формирование массива // 1. Объявление переменных string* AS; // массив вводимых строк, это результат string* AS2; // дополнительный массив строк int count; // количество элементов в массиве string s; // дополнительная переменная-строка char buf[80]; // буфер для ввода строк // 2. Цикл ввода строк, конец ввода - пустая строка "" cout "Enter strings:\n"; count = 0; AS = nullptr; do < // 2.1. Ввести строку в массив типа char[] cout "=> "; cin.getline(buf, 80, '\n'); // строки вводятся с пробелами // 2.2. Скопировать строку char[] в строку типа string s = buf; // 2.3. Если введена не пустая строка if (s != "") < // 2.3.1. Увеличить количество строк count++; // 2.3.2 Освободить память для нового массива AS2 = new string[count]; // 2.3.3. Скопировать данные из старого массива в новый for (int i = 0; i < count - 1; i++) AS2[i] = AS[i]; // 2.3.4. Добавить введенную строку в новый массив AS2[count - 1] = s; // 2.3.5. Освободить память, выделенную под старый (предыдущий) массив if (AS != nullptr) delete[] AS; // 2.3.6. Перенаправить указатель из предыдущего массива AS на массив AS2 AS = AS2; > > while (s != ""); // 3. Вывести созданный массив AS на экран cout "\nArray AS is as follows:\n"; if (count > 0) for (int i = 0; i < count; i++) cout "AS[" << i "] color: #0000ff;">else cout "array AS is empty."; // 4. После использования массива AS освободить память, выделенную для него delete[] AS; >

Результат выполнения программы

Enter strings: => abc def => Hello world! => bestprog.net => This is a text. => Array AS is as follows: AS[0] = abc def AS[1] = Hello world! AS[2] = bestprog.net AS[3] = This is a text.
5. Пример сортировки массива строк методом вставки

В примере формируется массив из count элементов. Затем происходит сортировка этого массива и вывод результата на экран.

#include using namespace std; void main() < // Массивы строк в C++. Строки типа string // Сортировка массива строк методом вставки // 1. Объявление переменных string* AS; // массив строк, который нужно отсортировать int count; // количество элементов в массиве string s; // дополнительная переменная-строка char buf[80]; // буфер для ввода строк // 2. Ввести количество элементов в массиве cout "count color: #008000;">// 3. Проверка, корректно ли значение count if (count <= 0) < cout "Incorrect input."; return; > // 4. Выделить память для count строк AS = new string[count]; // 5. Цикл ввода строк в массив cout "Enter strings:\n"; cin.ignore(4096, '\n'); for (int i = 0; i < count; i++) < // строки вводятся с пробелами cout "=> "; cin.getline(buf, 80, '\n'); AS[i] = buf; // скопировать строку > // 6. Вывод введенного массива для проверки cout "\nArray AS:" for (int i = 0; i < count; i++) cout "A[" << i "] color: #008000;">// 7. Сортировка массива AS по возрастанию for (int i=0; ifor (int j=i; j>=0;j--) if (AS[j] > AS[j + 1]) < // поменять местами строки s = AS[j]; AS[j] = AS[j + 1]; AS[j + 1] = s; > // 8. Вывод посортированного массива AS cout "\nSorted array AS:\n"; for (int i = 0; i < count; i++) cout "AS[" << i "] color: #008000;">// 9. Освобождение памяти, выделенной для массива AS delete[] AS; >

Результат работы программы

count = 8 Enter strings: => q w e => sds => ds sdjh => Adss => Dc kdshk => sdkjk => s1 s2 s3 => dd12 29918 Array AS: A[0] = q w e A[1] = sds A[2] = ds sdjh A[3] = Adss A[4] = Dc kdshk A[5] = sdkjk A[6] = s1 s2 s3 A[7] = dd12 29918 Sorted array AS: AS[0] = Adss AS[1] = Dc kdshk AS[2] = dd12 29918 AS[3] = ds sdjh AS[4] = q w e AS[5] = s1 s2 s3 AS[6] = sdkjk AS[7] = sds
6. Пример поиска заданной строки в массиве строк

В примере демонстрируется алгоритм поиска строки в массиве строк.

#include #include using namespace std; void main() < // Массивы строк в C++. Строки типа string // Поиск строки в массиве строк // 1. Объявление переменных string* AS; // массив строк int count; // количество элементов в массиве string s; // искомая строка char buf[80]; // буфер для ввода строк // 2. Ввести количество элементов в массиве cout "count color: #008000;">// 3. Проверка, корректно ли значение count if (count <= 0) < cout "Incorrect input."; return; > // 4. Выделить память для count строк AS = new string[count]; // 5. Цикл ввода строк в массив cout "Enter strings:\n"; cin.ignore(4096, '\n'); for (int i = 0; i < count; i++) < // строки вводятся с пробелами cout "=> "; cin.getline(buf, 80, '\n'); AS[i] = buf; // скопировать строку > // 6. Вывод введенного массива для проверки cout "\nArray AS:" for (int i = 0; i < count; i++) cout "A[" << i "] color: #008000;"> // 7. Ввод искомой строки cout << endl "Enter string:" '\n'); s = buf; // в переменной s - введенная строка // 8. Поиск строки s в массиве AS bool f_is = false; for (int i = 0; i < count; i++) if (s == AS[i]) < // если строка найдена, f_is = true; break; // то выйти из цикла > // 9. Вывод результата if (f_is) cout "String \"" << s "\" is in the array AS." else cout "String \"" << s "\" is not in the array AS." // 10. Освобождение памяти, выделенной для массива AS delete[] AS; >

Результат работы программы

count = 5 Enter strings: => a s => b cd => ddd => ef ghi => jkl Array AS: A[0] = a s A[1] = b cd A[2] = ddd A[3] = ef ghi A[4] = jkl Enter string: ef ghi String "ef ghi" is in the array AS.
7. Пример определения количества строк в массиве строк в соответствии с заданным условием

Задан массив строк. Нужно вычислить количество строк, которые начинаются с символа ‘+’ .

#include #include using namespace std; void main() < // Массивы строк в C++. Строки типа string // Подсчет количества вхождений строки в массиве строк // 1. Объявление переменных string* AS; // массив строк int count; // количество элементов в массиве int number; // количество строк, которые начинаются на '+' char buf[80]; // буфер для ввода строк // 2. Ввести количество элементов в массиве cout "count color: #008000;"> // 3. Проверка, корректно ли значение count if (count <= 0) < cout "Incorrect input."; return; > // 4. Выделить память для count строк AS = new string[count]; // 5. Цикл ввода строк в массив cout "Enter strings:\n"; cin.ignore(4096, '\n'); for (int i = 0; i < count; i++) < // строки вводятся с пробелами cout "=> "; cin.getline(buf, 80, '\n'); AS[i] = buf; // скопировать строку > // 6. Ввод массива AS для проверки cout "\nArray AS:" for (int i = 0; i < count; i++) cout "A[" << i "] color: #008000;">// 7. Цикл вычисления number number = 0; for (int i = 0; i < count; i++) if ((AS[i].length() > 0) && (AS[i][0] == '+')) // если строка непустая и первый символ '+' number++; // 8. Вывод результата cout << endl "number color: #008000;">// 9. Освобождение памяти, выделенной для массива AS delete[] AS; >

Результат работы программы

count = 7 Enter strings: => +as => -lskd lskd => bdc sldk => +200 => a+b => dn dd dy => fds sds Array AS: A[0] = +as A[1] = -lskd lskd A[2] = bdc sldk A[3] = +200 A[4] = a+b A[5] = dn dd dy A[6] = fds sds number = 2

Связанные темы

  • Определение массива. Одномерные массивы. Инициализация массива
  • Двумерные массивы. Массивы строк. Многомерные массивы

C#. Массивы строк. Примеры решения наиболее распространенных задач

Массивы строк. Примеры решения наиболее распространенных задач

Поиск на других ресурсах:

1. Массив строк. Тип string[] . Создание массива строк

В языке C# строки могут быть объединены в массив. Каждая строка представляется типом string .

Для создания массива строк нужно выполнить следующие шаги.

1. Объявить ссылку на тип string , например

string[] arrString;

где arrString – название ссылки;

2. Выделить память для массива

arrString = new string[size];

здесь size – количество строк (экземпляров) типа string .

2. Пример инициализации массива строк

Массив строк может быть инициализирован при его объявлении. Ниже приводится пример инициализации и вывод на экран массива daysOfWeek , определяющего дни недели.

using System; namespace ConsoleApp8 < class Program < static void Main(string[] args) < // Инициализация массива строк string[] daysOfWeek = < "Sunday", "Monday", "Tuersday", "Wednesday", "Thirsday", "Friday", "Saturday" >; // Вывод массива строк AS в цикле for (int i = 0; i < daysOfWeek.Length; i++) Console.WriteLine("AS[] = ", i, daysOfWeek[i]); Console.ReadKey(); > > >

Результат выполнения программы

AS[0] = Sunday AS[1] = Monday AS[2] = Tuersday AS[3] = Wednesday AS[4] = Thirsday AS[5] = Friday AS[6] = Saturday
3. Пример ввода строк с клавиатуры и создания массива строк

В примере вводятся строки с клавиатуры до тех пор, пока не будет введена пустая строка «» . Одновременно формируется массив строк, который выводится на экран после завершения ввода.

using System; namespace ConsoleApp8 < class Program < static void Main(string[] args) < // Ввод строк с клавиатуры // и образование нового массива // 1. Объявление переменных string[] AS; // ссылка на массив строк int count; // текущее количество строк в массиве string s; string[] AS2; // дополнительная переменная-ссылка - сохраняет старый массив строк // 2. Цикл ввода строк Console.WriteLine("Enter strings:"); count = 0; // обнулить количество строк AS = new string[count]; // выделить память для 0 строк do < // Ввести строку s = Console.ReadLine(); // Проверка, пустая ли строка if (s!="") < // если строка не пустая, то добавить строку в массив count++; // предварительно выделить память для нового массива // в котором на 1 элемент больше AS2 = new string[count]; // скопировать старый массив в новый for (int i = 0; i < AS2.Length - 1; i++) AS2[i] = AS[i]; // добавить последнюю введенную строку в массив AS2 AS2[count - 1] = s; // Освобождать память, предварительно выделенную под AS не нужно, // этим занимается сборщик мусора // перенаправить ссылку AS на AS2 AS = AS2; > > while (s != ""); // 3. Вывод массива строк AS в цикле for (int i = 0; i < AS.Length; i++) Console.WriteLine("AS[] = ", i, AS[i]); Console.ReadKey(); > > >

Как видно из вышеприведенного кода, не нужно делать освобождение предварительно выделенной памяти для массива AS как в языках C/C++. Этим занимается сборщик мусора.

Результат работы программы

Enter strings: abc bcdef ghi jkl mno AS[0] = abc AS[1] = bcdef AS[2] = ghi AS[3] = jkl mno
4. Пример сортировки массива строк методом вставки

В примере демонстрируется ввод массива из n строк ( n >0) и его сортировка методом вставки. Строки сортируются по возрастанию.

using System; namespace ConsoleApp8 < class Program < static void Main(string[] args) < // Сортировка массива строк методом вставки // 1. Объявление переменных string[] AS; // массив строк int count; // количество элементов в массиве string s; // дополнительная переменная-строка // 2. Ввести количество строк Console.Write("count color: #008080;">Int32.Parse(Console.ReadLine()); // 3. Выделить память для массива из count строк AS = new string[count]; // 4. Ввести данные массива с клавиатуры Console.WriteLine("Enter array:"); for (int i=0; iConsole.Write("AS[] color: #008080;">Console.ReadLine(); > // 5. Сортировка методом вставки for (int i = 0; i < AS.Length - 1; i++) for (int j = i; j >= 0; j--) if (String.Compare(AS[j], AS[j + 1]) > 0) // функция Compare() < // поменять значения местами s = AS[j]; AS[j] = AS[j + 1]; AS[j + 1] = s; > // 6. Вывести массив AS Console.WriteLine("Sorted array:"); for (int i = 0; i < AS.Length; i++) Console.WriteLine("AS[] = ", i, AS[i]); Console.ReadKey(); > > >

Как видно из вышеприведенного примера, для сравнения двух массивов используется функция Compare() . Эта функция возвращает число больше 0, если первая строка находится в лексикографическом порядке после второй строки. Если строки равны, функция возвращает нулевое значение.

Результат работы программы

count = 5 Enter array: AS[0] = lkd AS[1] = kbd AS[2] = abcd AS[3] = jklm nop AS[4] = ffed Sorted array: AS[0] = abcd AS[1] = ffed AS[2] = jklm nop AS[3] = kbd AS[4] = lkd
5. Пример поиска заданной строки в массиве строк

В примере вводится массив строк и вводится некоторая строка. Если строка есть в массиве, то определяется ее позиция. Результат поиска выводится на экран.

using System; namespace ConsoleApp8 < class Program < static void Main(string[] args) < // Поиск заданной строки в массиве строк // 1. Объявление переменных string[] AS; // массив строк int count; // количество элементов в массиве string str; // искомая строка // 2. Ввести количество строк Console.Write("count color: #008080;">Int32.Parse(Console.ReadLine()); // 3. Проверка, корректно ли значение count if (count<=0) < Console.WriteLine("Error. The value of count is incorrect."); Console.ReadKey(); return; > // 4. Выделить память для массива из count строк AS = new string[count]; // 5. Ввести данные массива с клавиатуры Console.WriteLine("Enter array:"); for (int i=0; iConsole.Write("AS[] color: #008080;">Console.ReadLine(); > // 6. Ввести строку символов Console.Write("Enter string: "); str = Console.ReadLine(); // 7. Поиск строки в массиве строк bool f_is = false; // флаг, сигнализирующий о наличии строки в массиве int index = -1; // позиция строки в массиве for (int i = 0; i < AS.Length - 1; i++) if (str == AS[i]) < f_is = true; index = i; > // 8. Вывод результата if (f_is) < Console.WriteLine("String \"\" is in the array.", str); Console.WriteLine("Position is ", index); > else < Console.WriteLine("String \"\" is not in the array.", str); > Console.ReadKey(); > > >

Результат работы программы

count = 7 Enter array: AS[0] = sd AS[1] = lkjl AS[2] = wewe AS[3] = ooii AS[4] = slkdlk AS[5] = cxx AS[6] = lkl Enter string: wewe String "wewe" is in the array. Position is 2
6. Пример подсчета количества вхождений заданной строки в массиве строк

В примере вводится строка и массив строк. Затем осуществляется подсчет количества вхождений заданной строки в массиве строк.

using System; namespace ConsoleApp8 < class Program < static void Main(string[] args) < // Вычисление количества вхождений заданной строки в массиве строк // 1. Объявление переменных string[] AS; // массив строк int count; // количество элементов в массиве string str; // строка, количество вхождений которой вычисляется int n_occurs; // количество вхождений - результат // 2. Ввод строки str Console.WriteLine("Enter string:"); str = Console.ReadLine(); // 3. Ввод количества элементов в массиве Console.Write("count color: #008080;">Convert.ToInt32(Console.ReadLine()); // 4. Проверка, корректно ли значение count if (count<=0) < Console.WriteLine("Error. The value of count is incorrect."); Console.ReadLine(); return; > // 5. Выделение памяти для массива строк AS = new string[count]; // 6. Ввод массива с клавиатуры Console.WriteLine("Enter the array AS:"); for (int i=0;iConsole.Write("AS[] color: #008080;">Console.ReadLine(); > // 7. Подсчет количества вхождений n_occurs = 0; for (int i = 0; i < AS.Length; i++) if (str == AS[i]) n_occurs++; // 8. Вывод результата Console.WriteLine("n_occurs = ", n_occurs); Console.ReadKey(); > > >

Результат выполнения программы

Enter string: abc count = 9 Enter the array AS: AS[0] = dd AS[1] = abc AS[2] = ghi AS[3] = jklm AS[4] = abc AS[5] = def AS[6] = bca AS[7] = abc AS[8] = fklsdj n_occurs = 3

Связанные темы

  • Одномерные массивы. Примеры решения задач на одномерные массивы. Массивы структур. Массивы классов. Инициализация массивов
  • Многомерные массивы. Ступенчатые массивы. Инициализация многомерных массивов
  • Ссылки на массивы. Свойство Length . Присваивание массивов
  • Неявно типизированные массивы. Ключевое слово var

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

На входе строка с 4-мя числами. Как заполнить массив числами из строки?

//строка "11 0 0 17" byte[] byteArray = new byte[4]; byteArray[0] = //первое из "11 0 0 17" byteArray[1] = //второе из "11 0 0 17" byteArray[2] = //третье из "11 0 0 17" byteArray[3] = //четвертое из "11 0 0 17"
  • Вопрос задан более трёх лет назад
  • 544 просмотра

Комментировать

Решения вопроса 1

Сергей Горностаев @sergey-gornostaev Куратор тега Java

Седой и строгий

String str = "11 0 0 17"; byte[] byteArray = new byte[4]; String[] strArray = str.split(" "); for (int x = 0; x < strArray.length; x++) < if (x >= byteArray.length) break; byteArray[x] = Byte.parseByte(strArray[x]); >

Ответ написан более трёх лет назад

Комментировать

Нравится 1 Комментировать

opinatus / Solution.java

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

package com . javarush . test . level10 . lesson11 . home08 ;
import java . util . ArrayList ;
/* Массив списков строк
Создать массив, элементами которого будут списки строк. Заполнить массив любыми данными и вывести на их экран.
*/
public class Solution
public static void main ( String [] args )
ArrayList < String >[] arrayOfStringList = createList ();
printList ( arrayOfStringList );
>
public static ArrayList < String >[] createList ()
//Массив списков типа Стринг равно создать массив списков на 3 элемента
ArrayList < String >[] listOfList = new ArrayList [ 3 ];
ArrayList < String >list1 = new ArrayList < String >();
ArrayList < String >list2 = new ArrayList < String >();
ArrayList < String >list3 = new ArrayList < String >();
for ( int i = 1 ; i < 10 ; i ++)
list1 . add ( «asfadd» );
list2 . add ( «akllkjvzxcv» );
list3 . add ( «alhj;;j;;ok;ojlhuh» );
>
listOfList [ 0 ] = list1 ;
listOfList [ 1 ] = list2 ;
listOfList [ 2 ] = list3 ;
return listOfList ;
>
public static void printList ( ArrayList < String >[] arrayOfStringList )
for ( ArrayList < String >list : arrayOfStringList )
for ( String s : list )
System . out . println ( s );
>
>
>
>

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

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