首页 > 其他 > 详细

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

时间:2017-07-09 18:59:17      阅读:215      评论:0      收藏:0      [点我收藏+]

使用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.csdn.net/cogbee/article/details/8931838

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

原文:http://www.cnblogs.com/farewell-farewell/p/7142169.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!