通过string :: insert插入char时出错

时间:2017-07-25 02:03:39

标签: c++ string

我的问题类似于this one,但那里没有示例代码,我也没有发现它有用。

我的错误是

  

调用类的私有构造函数' std :: __ 1 :: __ wrap_iter'

我的问题的一个最小例子可以在下面找到:

#include <iostream>
#include <string>

using namespace std;

int main(){
    string g = "this_word";
    cout << g << endl;
    char temp = g[0];
    g.erase(0,1);
    cout << g << endl;
    g.insert(0,temp); // Compiler seems to dislike this.  Why?
    cout << g << endl;
    return 0;
}

我已经通过两个编译器尝试了这个,并且出现了同样的错误。从标准文档中尽可能多地阅读,但不了解我的错误。

1 个答案:

答案 0 :(得分:5)

最好检查std::string::insert()的所有重载签名然后决定使用哪一个。 m4.xlarge与其中任何一个都不匹配。

要插入g.insert(0,temp);,您可以传递像

这样的迭代器
char

或传递索引并统计:

g.insert(g.begin(), temp);