1

Тема: [C++] Рядок вказаного розміру

Як створити рядок довільного розміру в C++ ?

2

Re: [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++ це робиться інакше, нехай мене поправлять).

Подякували: leofun011

3

Re: [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;
}
Подякували: koala, leofun012