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


    使用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] = '';
        printf("%s
    ",p);
        cout<<p;

    4.  char[] --> string

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

    参考:  http://blog.csdn.net/cogbee/article/details/8931838

  • 相关阅读:
    输出一个行列矩阵
    猜年龄做个循环
    比较三个数字的大小
    HELLO WORLD
    Python学习(十三) —— 网络编程
    Python学习(十二) —— 面向对象
    Python学习(十一) —— 模块和包
    Python学习(十) —— 常用模块
    Python学习(八) —— 内置函数和匿名函数
    Python题目练习(二)
  • 原文地址:https://www.cnblogs.com/farewell-farewell/p/7142169.html
Copyright © 2020-2023  润新知