Тема: [C++] Рядок вказаного розміру
Як створити рядок довільного розміру в C++ ?
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → [C++] Рядок вказаного розміру
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Як створити рядок довільного розміру в C++ ?
Йдеться про сішні рядки типу char* (або char[], що приблизно те ж саме)?
Знаючи розмір (це може бути як константа, так і значення, обчислюване під час роботи програми), можна виділити потрібну кількість байтів функцією malloc() і записати вміст рядка за цією адресою.
#include<stdlib.h>
#include<string.h>
....
char s1[]="Hell"; // Нехай s1, s2 — рядки типу char*, в які записано якийсь текст.
char s2[]="o!";
char* s=(char*)malloc(strlen(s1)+strlen(s2)+1); //створюємо рядок s довжиною як ці два рядки разом
strcpy(s, s1); // копіюємо в s вміст рядка s1
strcat(s, s1); // дописуємо в кінець s вміст рядка s2
cout<<s; //має вивести Hello!
....
Якщо очікуваний максимальний розмір рядка відомо наперед, і під час роботи програми цей розмір не буде перевищено, то можна просто оголосити char імʼя[розмір].
char s[81]; // в рядок s можна записати не більше 80 символів.
strcpy(s, "Якийсь текст");
В обох випадках треба врахувати додаткове місце для кінцевого нуль-символа (наприклад, якщо рядок міститиме 80 однобайтних друкованих символів, йому потрібен розмір 81).
(Перепрошую за сішний стиль — якщо в C++ це робиться інакше, нехай мене поправлять).
В C++ STL є клас string https://cplusplus.com/reference/string/string/ в якому не потрібно вказувати розмір явно
#include <iostream>
#include <string>
using namespace std;
int main() {
string greeting = "Hello";
cout << greeting;
return 0;
}
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися