【发布时间】:2019-03-04 21:26:30
【问题描述】:
我 15 岁,我搬到了瑞典。我没有时间学习 C++,因为我需要学习这门语言,但后来(可能几个月),我将继续阅读 300 页的书(这是 500 页,但在 3 年内我(主要通过 YouTube)学习了那本书的200页)。我现在不太愿意学习向量,所以如果你给我关于向量的答案,如果你能向我解释它是如何工作的,或者给我链接,它“简单”地解释了向量。
无论如何,说了这么多,这是我的问题:
我在 C++ 程序中构建,一开始它有 1 个对象(NAobj),它将存储您的姓名和年龄,然后您可以选择选项以继续创建另一个帐户,依此类推。当您第一次运行该程序时,它会生成 Aobj 数组对象,并在您每次想要创建新帐户时扩展它。但我就是无法让它工作。
我找到了如何扩展对象数组,但是,正如我所说,它并没有真正起作用......
How to expand an array dynamically in C++? {like in vector }
这是我的代码:
#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 - 新帐户对象(帐户名称的“临时”存储,以后可能不会使用...)
附言 对不起我的英语不好,我知道我的程序很乱,但我懒得整理它。
【问题讨论】:
-
嗨,Danijel,欢迎来到 StackOverflow。你的英语很好;)看看这个问题:Creation of dynamic array of dynamic objects in C,它解释了如何使用
std::vector。
标签: arrays object visual-c++ dynamic