我的问题类似于this one但是那里没有示例代码,我觉得它没有帮助。
我的错误是
calling a private constructor of class '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;
}
我已经通过两个编译器试过了,同样的错误。尽可能多地阅读标准文档,但不理解我的错误。
最佳答案
最好检查std::string::insert()的所有重载签名然后决定使用哪一个。 g.insert(0,temp);
与其中任何一个都不匹配。
为了插入一个char
,你可以像这样传递一个迭代器
g.insert(g.begin(), temp);
或者传递索引并一起计数:
g.insert(0, 1, temp);
关于c++ - 通过 string::insert 插入 char 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45292704/