Мне 15 лет, и я переехал в Швецию.У меня нет времени изучать c ++, потому что мне нужно выучить язык, но позже (вероятно, через несколько месяцев) я продолжу работу с книгой на 300 страниц (это 500, но через 3 года я узнал (в основном через YouTube) о200 страниц этой книги).Я не хочу сейчас изучать вектор, поэтому, если вы дадите мне ответ с вектором, не могли бы вы объяснить мне, как он работает, или дать ссылку, где он "просто" объясняет вектор.
В любом случаеПосле того, как все сказано и сделано, вот моя проблема: я собираю программу на c ++, которая в начале имеет 1 объект (NAobj
), в котором будут храниться ваши имя и возраст, а затем вы можете выбрать опцию, чтобы продолжитьсоздать другую учетную запись и так далее.При первом запуске этой программы она создает массив Aobj
и расширяет его каждый раз, когда вы хотите создать новую учетную запись.Но я просто не могу заставить его работать.
Я нашел, как я могу расширить массив объектов, но, как я уже сказал, это не реально работает ...
Как динамически расширить массив в C ++?{как в векторе}
Вот мой код:
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
int AccountFinder(string findName, string accountNames);
class Account
{
public:
Account()
{
}
~Account()
{
}
string name = "-ERROR NAME-";
int age = 18;
private:
};
Account NAobj;
int Asize = 1;
string AName;
string Iname;
int ASelector;
int main() {
Account *Aobj = new Account[Asize];
while (Iname.empty()) {
cout << "Name: #";
getline(cin, Iname);
if (Iname.empty())
{
cout << '\a' << endl;
MessageBox(NULL, "No name found\nPlease enter name", "Error 01", MB_ICONERROR);
system("cls");
}
else if (Iname == " ") {
cout << '\a' << endl;
MessageBox(NULL, "Non suported name", "Error 02", MB_ICONERROR);
system("cls");
Iname.clear();
}
else {
string a;
cout << "Crete account? y\\n #";
getline(cin, a);
if (a == "y") {
AName += Iname;
////generatin account
NAobj.name = Iname;
Account *TAobj = new Account[Asize];
if (Asize == 1) {
copy(Aobj, Aobj + Asize - 1, TAobj);
delete[] Aobj;
Aobj = TAobj;
copy(Aobj, Aobj + Asize - 1, &NAobj);
}
else {
copy(Aobj, Aobj + Asize - 1, TAobj);
copy(&NAobj, &NAobj, (TAobj + Asize - 1));
delete[] Aobj;
Aobj = TAobj;
}
////
AName += " ";
cout << "Want to continue? y\\n #";
getline(cin, a);
if (a == "y") {
system("cls");
Iname.clear();
}
else {
AName.resize(AName.size() - 1);
}
Asize++;
}
else {
cout << "Want to continue? y\\n #";
getline(cin, a);
if (a == "y") {
system("cls");
Iname.clear();
}
else {
AName.resize(AName.size() - 1);
}
}
}
}
Iname.clear();
cout << ">" << AName << "<" << endl;
cout << AName << endl;
string name;
cin >> name;
int ANumber = AccountFinder(name, AName);
if(ANumber != -1)
cout << ANumber << endl;
else
cout << "no account name: >" << name << "< found" << endl;*/
cout << endl;
system("pause");
}
int AccountFinder(string findName, string accountNames) {
string compareName;
int Account = 0;
bool space = TRUE;
int startPos = 0;
int a = 0;
while (1) {
while (1) {
if (accountNames.at(a) == ' ') {
break;
}
else
a++;
if (a == accountNames.size() - 1)
return -1;
}
compareName.resize(a - startPos);
for (int b = startPos; b < a; b++) {
compareName.at(b - startPos) = accountNames.at(b);
}
if (findName == compareName) {
return Account;
}
a++;
startPos = a;
if (Account > 0) {
1;
}
Account++;
}
}
Asize
- Размер счета (указать размер массива)
Aobj
- Объект учетной записи (массив объектов учетной записи)
NAobj
- Новый объект учетной записи («временное» хранилище для имени учетной записи, вероятно, не буду использовать его позже ...)
Вывод программы
ps Извините за мой плохой английский, и я знаю, что моя программа запутана, но мне лень ее приводить в порядок.