c++ - 重新分配大小未知的 const char 数组

标签 c++ c arrays char constants

所以我的主要函数中有这 2 个数组:

const char* basket[];
const char* basket_peach[] = {"1 1111 2 0000","2 2222 2 0000", 0};
...
    if (strcmp (c_id,"somebasketid") == 0){
        basket = basket_peach;
    }
...

如果我尝试这样做:

...
    if (strcmp (c_id,"somebasketid") == 0){
         const char* basket[] = basket_peach;
    }
...

我的主要功能告诉我这个“错误:使用未声明的标识符‘篮子’”

知道怎么做吗?

最佳答案

简单地说,您不能在 C 和 C++ 中分配数组。

此外,以下甚至不会编译:

const char* basket[];

数组必须使用显式大小(在 [] 内)或编译器可以从中推导出大小的初始化列表来声明。

如果您正在编写 C++,那么您真正需要的是 vector :

std::vector<const char*> basket;
std::vector<const char*> basket_peach = {"1 1111 2 0000","2 2222 2 0000", 0};
...
    if (strcmp (c_id,"somebasketid") == 0){
        basket = basket_peach;
    }

以上将按您的预期工作。更好的是,将 const char* 替换为 string还有:

std::vector<std::string> basket;
std::vector<std::string> basket_peach = {"1 1111 2 0000","2 2222 2 0000", ""};
...                                                          NOTICE THIS! ^^
    if (c_id == "somebasketid"){
        basket = basket_peach;
    }

这也会像您预期的那样工作。

关于c++ - 重新分配大小未知的 const char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28873112/

相关文章:

c++ - 将 libxml++ 和 glib 库与适用于 C++ Windows 的 CodeBlocks IDE 链接的问题

javascript - 排序数组,但忽略开头的一些特定字符

php - 如何在 url 中传递数组以供 javascript 检索?

c++ - 无符号负原语?

c++ - 如何注册对 Qt 容器的引用?

c++ - Visual Studio 2017 native 单元测试 - 对项目的引用不起作用

c - 为什么这个 JNI 只在 Windows 上调用段错误?

c - 使用 fprintf 读取无效

CUDA统一内存可以用作固定内存(统一虚拟内存)吗?

C语言strtok()分隔符后特定元素