Top.Mail.Ru
Ответы

Увеличение строки в цикле

Как можно увеличивать строку (СString) на один элемент каждую итерацию, при этом его заполняя? Размер неизвестен.

Дополнен

при работе этого появляется исключение:

int s = 0;
CString* zac=0;
char sem[7] = { '0', '1', '2', '3', '4', '5', '6' };
double ma;
double ex = modf(i, &ma);
int u = (int)ma;
CString* chce = NULL;
CString* chdr = NULL;
//chce[s] = '0';
//chdr[s] = '0';
while (u != 0)
{
chce = (CString*)malloc(1);
chce[s] = sem[u % 7];
s += 1;
u = u / 7;
}
// for (int t = s; t >= 0; t--)
// s = 0;
do {
chdr = (CString*)malloc(1);
ex = ex * 7;
ex = modf(ex, &i);
chdr[s] = sem[(int)i];
s = s + 1;
} while ((ex != 0) && (s < 6));

По дате
По Рейтингу
Аватар пользователя
Мастер

Для динамического увеличения строки (CString) в C++ можно воспользоваться стандартными операциями для работы с символьными строками и динамической памятью. Предположим, что у вас есть начальная строка CString originalString и вы хотите увеличивать её на один символ на каждой итерации, заполняя новый символ определенным значением. Вот пример, как это можно сделать:

cpp
Copy code
#include <iostream>
#include <cstring> // Для работы с CString

int main() {
CString originalString = "Initial Text";
char newCharacter = '*'; // Новый символ для заполнения

int originalLength = originalString.GetLength();

for (int i = 0; i < originalLength + 1; ++i) {
// Создаем новую строку длинной на один символ больше
CString newString;
newString.Format(_T("%s%c"), originalString, newCharacter);

// Выводим новую строку
std::wcout << newString.GetString() << std::endl;

// Копируем новую строку в originalString для следующей итерации
originalString = newString;
}

return 0;
}
В этом примере используется функция Format, чтобы создать новую строку, добавляя новый символ в конец. Затем новая строка присваивается originalString для использования в следующей итерации. Помните, что CString – это специфический класс MFC (Microsoft Foundation Classes), и этот код будет работать только в контексте MFC-приложения.

Если вы работаете в стандартном C++ без использования MFC и хотите динамически увеличивать и заполнять строки, то вам придется использовать динамическое выделение памяти для символьных массивов (C-style strings) и самостоятельно управлять памятью.