no matching function for call to ‘std::basic_string<char>::assign(std::string&, int)

本文介绍了在使用C++标准库string类中的assign函数时遇到的问题,并给出了正确的使用方法。同时,还提供了string与char*、char[]类型转换的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用string中的assign赋值函数报错,代码为:

text0.assign(line,i+1);
其中text0与line都为string类型

最后发现assign函数的原型为

string &assign(const char *s,int n);

将代码改为以下即可

text0.assign(line.c_str(),i+1);

 

附  assign函数

string &operator=(const string &s);//把字符串s赋给当前字符串
string &assign(const char *s);//用c类型字符串s赋值
string &assign(const char *s,int n);//用c字符串s开始的n个字符赋值
string &assign(const string &s);//把字符串s赋给当前字符串
string &assign(int n,char c);//用n个字符c赋值给当前字符串
string &assign(const string &s,int start,int n);//把字符串s中从start开始的n个字符赋给当前字符串
string &assign(const_iterator first,const_itertor last);//把first和last迭代器之间的部分赋给字符串

及  char*、char[]与string转换方式

1.  string --> char *

char *     =    string.c_str;

2.  char * --> string 

//可以直接赋值。

string s;
char *p = "abcdef";
s = p;

不过,变为string后使用printf输出会出现问题,用cout没有问题。是因为“%s”要求后面的对象的首地址。但是string不是这样的一个类型。

3. string --> char[]

不可直接赋值,使用循环赋值

    string pp = "dagah";
    char p[8];
    int i;
    for( i=0;i<pp.length();i++)
        p[i] = pp[i];
    p[i] = '\0';
    printf("%s\n",p);
    cout<<p;

4.  char[] --> string

可以直接赋值,但会出现2中的问题

 

参考:  http://blog.youkuaiyun.com/cogbee/article/details/8931838

转载于:https://www.cnblogs.com/farewell-farewell/p/7142169.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值