我是第一个C++类的编程学生,对于我最近的一个项目,我无法创建像C#那样的字符串数组:
string MONTHS[ARRAY_CAPACITY] = { "Jan", "Feb", "Mar", "April", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dec" };
// this yields many compiler errors in C++
Run Code Online (Sandbox Code Playgroud)
是否有可能在C++中做类似的事情?
谢谢!
Mik*_*hor 15
如果在C++中初始化数组,那么它不需要设置大小(虽然它会接受一个),所以:
std::string months[] = { "Jan", "Feb", "Mar", "April", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dec" };
Run Code Online (Sandbox Code Playgroud)
使用g ++为我编译好,我希望它也可以在其他地方编译.我希望你的错误是由于缺少std::命名空间.
是的,它确实:
#include <string>
int main(void)
{
static const size_t Capacity = 12;
std::string Months[Capacity] = { "Jan", "Feb", "Mar", "April", "May",
"June", "July", "Aug", "Sep", "Oct",
"Nov", "Dec" };
}
Run Code Online (Sandbox Code Playgroud)
您的错误可能与其他内容有关.你还记得用std::吗?不知道,它可能是任何东西.是Capacity错误的大小?等等.
请注意,您的代码实际上不是一个常量数组.这是:
#include <string>
int main(void)
{
static const size_t Capacity = 12;
static const std::string Months[Capacity] = { "Jan", "Feb", "Mar", "April",
/* ^^^^^^^^^^^^ */ "May", "June", "July", "Aug",
"Sep", "Oct", "Nov", "Dec" };
}
Run Code Online (Sandbox Code Playgroud)
此外,您实际上并不需要Capacity,正如其他人会显示的那样,如果您愿意,可以使用const char*它,尽管您丢失了std::string界面.
常量字符串数组的首选方法可能是一个 cstring 数组,
const char* MONTHS[] = { "Jan", "Feb", "Mar", "April", "May", "June", "July",
"Aug", "Sep", "Oct", "Nov", "Dec" };
Run Code Online (Sandbox Code Playgroud)
然而,它也可以用 std::strings 来完成,
const string MONTHS[] = { string("Jan"), string("Feb"), ... };
Run Code Online (Sandbox Code Playgroud)
当您使用花括号初始化数组时,某些编译器可能不允许从 char* 隐式转换为 std::string;显式分配从 char* 构造的 std::string 将解决该问题。
| 归档时间: |
|
| 查看次数: |
22946 次 |
| 最近记录: |