【发布时间】:2018-08-07 10:49:25
【问题描述】:
如何将 char array[] 传递给接受const char* arg 类型的函数,最合适的方法是什么?
请忽略我在此示例中使用静态 100 缓冲区的事实:
char buff[100];
sprintf_s(buff, sizeof(buff), "%s", unrelated);
然后我需要将buff 传递给接受const char* 的函数
MyFunction(const char* path);
我尝试直接传递它:MyFunction(buff) 并且它有效,但有人可以解释为什么吗?是否有更好的方法来达到同样的效果?
【问题讨论】:
-
因为
char buff[100]在将其作为参数传递给函数时会衰减为char*(并且您始终可以将非const隐式转换为const)。更好的方法是使用std::string -
避免在 cmets 中回答问题。
-
if there is better way to achieve the same result?这到底是什么意思? -
正确的方法是通过
std::string或std::vector<char>。
标签: c++ arrays arguments constants