当我将 char 数组发送到输入参数为字符串的函数时会发生什么?
What happens when I send a char array into a function whose input parameter is a string?
我知道它会起作用。我更感兴趣的是如果我发送它会发生什么转换。对我来说,将参数更改为char*
然后自己使用to_String?
进行转换是否更好 或者从长远来看,这很好吗?
std::string
有一个构造函数来处理这种情况:
string (const char* s);
这使得以下工作:
char *s = "Hello, World!";
std::string str(s);
一旦s
不NULL
就会发生长期运行错误。
文档在这里
因为std::string
有一个构造函数,该构造函数接受编译器是否足够聪明const char*
可以使用它,并允许您将const char*
作为std::string
参数传递。 见 http://en.cppreference.com/w/cpp/language/implicit_conversion
在 c++ 中,当类型 T 具有采用 U 类型单个参数(例如 T::T(U((的构造函数时,编译器将允许代码从类型 U 隐式转换为类型 T。
请考虑以下代码
struct U
{
//etc.
}
struct T
{
T(U obj);
//etc.
}
my_func(T param);
int main()
{
U u;
my_func(u);
}
当编译器到达"my_func(u("并看到my_func需要 T 类型的参数时,它会查看 T 的构造函数。当它看到构造函数"T(U obj(;"时,它会将其就地插入函数调用中,如下所示:
//...
int main()
{
U u;
my_func(T(u));
}
重要的是要注意,这是完全静默完成的,如果它是在意外而不是故意的情况下完成的,可能会导致一些困难的调试。
相关文章:
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何从void函数输出字符串
- 使用用户定义函数的字符串反转
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- 在c++构造函数中使用随机字符串生成器
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- C++:如何使函数只返回作为列表一部分的字符串
- 如何在C++中的同一函数中使用字符串和双精度
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- 一个函数,用于查找字符串1包含字符串2 c++的次数
- 对函数 PlaySound 使用字符串变量
- 具有多个模板的模板函数,用于特定数据类型(如字符串)?
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- Visual c ++,使用字符串引用/指针调用 dll 函数
- 构造函数字符串参数未设置窗口标题
- C++默认构造函数:字符串参数与字符串参数()
- 使用函数C++字符串输入
- c++模板函数字符串类型不匹配