c++ - 通过 string::insert 插入 char 时出错

标签 c++ string

我的问题类似于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/

相关文章:

c++ - 从字符串常量到 'char*' 的折旧转换

c++ - 在模板函数和自动类型推导之间选择

c++ - QObject克隆

C++ 外部 : pointer vs. 引用

java - Java 无法取消引用 Int

java - 为什么显示 java.lang.ClassCastException : android. text.SpannableString cannot be cast to java.lang.String?

java - 如何检查 Java 字符串是否包含 GSM 扩展字符(非 Unicode)

c++ - 生成 4 个方向随机游动的 RCPP 函数

c++ - boost::lexical_cast 的替代方案

java - 如何从 Crashlytics 中检测崩溃原因?