字符串类型转换

尼克·辛格(Nikhil Singh)

我正在尝试这段简单的代码,以在一个函数中接受字符串并将其传递给其他函数

#include <iostream>
#include <string>

using namespace std;

void set_name(char *deviceName)
{
    cout<<"Local Device name is:"<<endl;
    cout<<deviceName<<endl;
}

void enter_name()
{
    cout<<"Enter a user friendly name"<<endl;
    string name;
    getline(cin, name);
    cout << "Entered name is:"<<endl;
    cout << name<<endl;

    set_name(name);
}

int main()
{
    enter_name();

    return 0;
}

但是当我编译这段代码时,出现以下错误:

 error C2664: 'set_name' : cannot convert parameter 1 from 'std::string' to 'char *'

请有人帮我解决此错误,确保我不想更改set_name()的原型;

您的函数set_name正在使用char*参数,而您正在尝试传递std::string如果您的函数参数是const char*,它将为您隐式转换:

void set_name(const char* name);

std::string name = "MyName";
set_name(name);

但是,您告诉编译器char*允许对此进行修改,因为它不是const,并且不能修改astd::string和string文字(双引号内的字符串)。

由于您的函数不变deviceName,因此将参数设为a是最合理的const char*; 但是,将其变成std::string更为有意义

void set_name(const std::string& deviceName)
{
    cout<<"Local Device name is:"<<endl;
    cout<<deviceName<<endl;
}

可以这样称呼:

// string literal
set_name("MyDeviceName");
const std::string device = "MyDeviceName";
// string
set_name(device);
// char*
char* device = "MyDeviceName"
set_name(device);

但是,如果您确实有理由传递achar* 且不打算修改参数,则可以这样调用它:

string name;
...
set_name(&name[0]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

字符串类型的转换

来自分类Dev

从字符串转换为通用类型

来自分类Dev

从字符串检索的转换类类型

来自分类Dev

基于字符串的Python类型转换

来自分类Dev

MongoDB将字符串类型转换为浮点类型

来自分类Dev

从“按钮”类型到字符串类型的转换无效

来自分类Dev

将类型名称从类型转换为字符串

来自分类Dev

从“按钮”类型到字符串类型的转换无效

来自分类Dev

MongoDB将字符串类型转换为浮点类型

来自分类Dev

字符串文字-字符类型之间的模板转换

来自分类Dev

Ansible警告“字符串字段中的类型列表已转换为字符串类型”

来自分类Dev

无法将“字符串”类型的值转换为预期的参数类型“绑定<字符串>”

来自分类Dev

UnicodeDecodeError:将类型字符串转换为unicode

来自分类Dev

如何将MultiIndex转换为字符串类型

来自分类Dev

在for循环中将字符串类型转换为Int

来自分类Dev

如何编写处理字符串类型转换的模板代码?

来自分类Dev

从字符串到类型“日期”的转换无效

来自分类Dev

将字符串数组转换为其他类型

来自分类Dev

在Android中转换特定类型的JSON字符串

来自分类Dev

验证JavaScript中的字符串和类型转换

来自分类Dev

将RGB字符串转换为颜色类型

来自分类Dev

从字符串到类型Double的转换无效

来自分类Dev

将LinqToExcel.RowNoHeader类型转换为字符串

来自分类Dev

在Python中将字符串转换为Unicode类型

来自分类Dev

无法将类型“字符串”转换为“整数”?

来自分类Dev

将数据类型转换为字符串(SML)

来自分类Dev

字符串到对象类型转换-差异

来自分类Dev

从字符串到数字类型的快速安全转换

来自分类Dev

Python类型转换字符串到int失败

Related 相关文章

热门标签

归档