嗨我有以下代码,
# include <iostream>
# include <limits>
using namespace std;
int main()
{
int runs,innings,timesnotout,n;
cout<<"Enter the number of players:";
cin>>n;
const char name[n][10]; //here error shows as "Expression must have a constant value" is displayed
}
我试图从输入中获取n值,然后使用n值作为数组大小
答案 0 :(得分:2)
这意味着错误消息的确切含义。您只能使用声明数组的常量表达式。在您的情况下,最好使用std::vector<std::string>
或甚至std::vector<std::array<char,
10&gt;&gt;`或在堆中分配数组。
答案 1 :(得分:1)
如果你打算保留每个玩家的统计数据,你应该定义一个结构/类和一个这样的向量:
struct PlayerStats
{
std::string Name;
unsigned int Runs;
unsigned int Innings;
unsigned int TimesNotOut;
};
int main()
{
unsigned int n = 0;
std::cout << "Enter number of players: ";
std::cin >> n; // some error checking should be added
std::vector<PlayerStats> players(n);
// ... etc
return 0;
}
答案 2 :(得分:0)
如果您想在不事先知道尺寸的情况下存储某些东西,可以使用矢量。因为它可以在程序执行期间动态增长。
在您的情况下,您可以使用以下内容:
#include <iostream>
#include <vector>
using namespace std;
int main() {
std::vector<string> nameVec;
nameVec.push_back("John");
nameVec.push_back("Kurt");
nameVec.push_back("Brad");
//Warning: Sometimes is better to use iterators, because they are more general
for(int p=0; p < nameVec.size(); p++) {
std::cout << nameVec.at(p) << "\n";
}
}