C++/动态赋值
C++/ Dynamic Assignment
创建 *Std
作为全局变量。
输入多少就创建多少*Std
Num
。
此代码未执行,因为 Num
包含在 main()
中。
有没有办法在从 main()
获取 Num
输入时将 *Std
设置为全局变量?
#include <iostream>
#include <string>
using namespace std;
struct s1 {
string str1;
};
s1* Std = new s1[Num];
int main()
{
cout << "How many [Std] do you want to create? : ";
int Num;
cin >>Num;
for (int i = 0; i < Num; i++)
{
getline(cin, Std[i].str1);
cout << "\nStd["<<i<<"].str1 : " << Std[i].str1<<"\n\n";
}
}
变量不必在声明时初始化。您可以将声明与赋值分开。
在这种情况下,您可以将 Std
保留为全局变量,如果您真的想这样做(尽管 globals are generally frowned upon,在这种情况下没有必要,因为没有其他函数需要访问 Std
),但是你必须在读入 Num
之后将 new[]
语句移动到 main()
,例如:
#include <iostream>
#include <string>
using namespace std;
struct s1 {
string str1;
};
s1* Std;
int main()
{
cout << "How many [Std] do you want to create? : ";
int Num;
cin >>Num;
Std = new s1[Num];
for (int i = 0; i < Num; i++)
{
getline(cin, Std[i].str1);
cout << "\nStd[" << i << "].str1 : " << Std[i].str1 << "\n\n";
}
delete[] Std;
}
也就是说,只要您需要动态数组,就应该使用标准 std::vector
容器,例如:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct s1 {
string str1;
};
vector<s1> Std;
int main()
{
cout << "How many [Std] do you want to create? : ";
int Num;
cin >>Num;
Std.resize(Num);
for (int i = 0; i < Num; i++)
{
getline(cin, Std[i].str1);
cout << "\nStd[" << i << "].str1 : " << Std[i].str1 << "\n\n";
}
}
创建 *Std
作为全局变量。
输入多少就创建多少*Std
Num
。
此代码未执行,因为 Num
包含在 main()
中。
有没有办法在从 main()
获取 Num
输入时将 *Std
设置为全局变量?
#include <iostream>
#include <string>
using namespace std;
struct s1 {
string str1;
};
s1* Std = new s1[Num];
int main()
{
cout << "How many [Std] do you want to create? : ";
int Num;
cin >>Num;
for (int i = 0; i < Num; i++)
{
getline(cin, Std[i].str1);
cout << "\nStd["<<i<<"].str1 : " << Std[i].str1<<"\n\n";
}
}
变量不必在声明时初始化。您可以将声明与赋值分开。
在这种情况下,您可以将 Std
保留为全局变量,如果您真的想这样做(尽管 globals are generally frowned upon,在这种情况下没有必要,因为没有其他函数需要访问 Std
),但是你必须在读入 Num
之后将 new[]
语句移动到 main()
,例如:
#include <iostream>
#include <string>
using namespace std;
struct s1 {
string str1;
};
s1* Std;
int main()
{
cout << "How many [Std] do you want to create? : ";
int Num;
cin >>Num;
Std = new s1[Num];
for (int i = 0; i < Num; i++)
{
getline(cin, Std[i].str1);
cout << "\nStd[" << i << "].str1 : " << Std[i].str1 << "\n\n";
}
delete[] Std;
}
也就是说,只要您需要动态数组,就应该使用标准 std::vector
容器,例如:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct s1 {
string str1;
};
vector<s1> Std;
int main()
{
cout << "How many [Std] do you want to create? : ";
int Num;
cin >>Num;
Std.resize(Num);
for (int i = 0; i < Num; i++)
{
getline(cin, Std[i].str1);
cout << "\nStd[" << i << "].str1 : " << Std[i].str1 << "\n\n";
}
}