C++ 如何在不同位置用新字符串填充静态字符串数组?
C++ How to populate a static array of strings with new strings in different locations?
说我明白了
char* MapIds[5000] = { "Northeast Asia","Hanyang","Pusan","Pyongyang","Shanghai","Beijing","Hong Kong", /*...5000 values etc../* };
我试过了
strcpy(MapIds[0], "gfggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg");
但是它崩溃了
如何不断更改它们而不弄乱其他元素中的字符串。
我不想使用 std::string 或 vector 那些会导致疯狂缓慢的编译时间。
因为你试图复制成文字字符串 ("Northeast Asia"
)。
在 C++ 中,文字字符串实际上是一个 常量 字符数组,任何修改此类数组的尝试都将导致 未定义的行为(有时会表现为崩溃)。
如果你想MapIds[0]
指向一个新字符串,那么你只需使用赋值:
MapIds[0] = "gfggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg";
因为文字字符串是常量字符数组,C++ 不允许您使用 char*
指向它们,您必须使用 const char*
:
const char* MapIds[] = { ... };
但是,更好的解决方案是根本不使用 C 风格的字符串和 char
指针(const
或不使用),而只使用 std::string
:
std::string MapIds[] = { ... };
然后您可以修改数组本身中的字符串,使用如上所示的简单赋值。
说我明白了
char* MapIds[5000] = { "Northeast Asia","Hanyang","Pusan","Pyongyang","Shanghai","Beijing","Hong Kong", /*...5000 values etc../* };
我试过了
strcpy(MapIds[0], "gfggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg");
但是它崩溃了
如何不断更改它们而不弄乱其他元素中的字符串。
我不想使用 std::string 或 vector 那些会导致疯狂缓慢的编译时间。
因为你试图复制成文字字符串 ("Northeast Asia"
)。
在 C++ 中,文字字符串实际上是一个 常量 字符数组,任何修改此类数组的尝试都将导致 未定义的行为(有时会表现为崩溃)。
如果你想MapIds[0]
指向一个新字符串,那么你只需使用赋值:
MapIds[0] = "gfggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg";
因为文字字符串是常量字符数组,C++ 不允许您使用 char*
指向它们,您必须使用 const char*
:
const char* MapIds[] = { ... };
但是,更好的解决方案是根本不使用 C 风格的字符串和 char
指针(const
或不使用),而只使用 std::string
:
std::string MapIds[] = { ... };
然后您可以修改数组本身中的字符串,使用如上所示的简单赋值。