【问题标题】:Append a char to a std::vector<string> at a specific location将 char 附加到特定位置的 std::vector<string>
【发布时间】:2014-12-09 09:08:51
【问题描述】:

我到处寻找,虽然我找到了如何将std::string 插入vector&lt;char&gt;,但我找不到将char 插入std::vector&lt;std::string&gt; 的方法

在文本编辑器项目中,我仅限于使用字符串向量,而检查何时将字符输入到文本编辑器的东西必须接受一个字符并返回一个字符。

如果我知道要在哪里插入一个字符到这个向量中,我可以调用什么来实现这一点?

作为旁注,我尝试做lines.push_back(&amp;c),我将行定义为std::vector&lt;std::string&gt;,但它说:

candidate function not viable: no known
      conversion from 'char' to 'const value_type' (aka 'const std::__1::basic_string<char,
      std::__1::char_traits<char>, std::__1::allocator<char> >') for 1st argument
    _LIBCPP_INLINE_VISIBILITY void push_back(const_reference __x);

【问题讨论】:

  • lines.emplace_back(1, c),或lines.push_back(std::string(1, c))
  • 从字符创建字符串,然后插入字符串?
  • 是要在向量中的特定位置将字符附加到字符串中还是要在向量中的指定位置插入长度为1的字符串?
  • @ChrisDrew 我希望将字符附加到特定位置的当前字符串向量。
  • @Alex 我认为混淆是因为您说要附加 字符,但不能将字符附加到字符串向量。您可以将字符附加到字符串,也可以将字符串附加到向量。

标签: c++ string vector char


【解决方案1】:

如果你想在向量后面添加一个新元素,你可以写一个字符

std::vector<std::string> v;

//...

v.push_back( { 1, 'A' } );

如果你想将一个字符附加到向量的已经存在的元素上,你可以写

std::vector<std::string> v;

//...

v[i] += 'A';

std::vector<std::string> v;

//...

v[i].push_back( 'A' );

如果你想在向量的某个现有元素的字符串中插入一个字符,你可以写

std::vector<std::string> v;

//...

v[i].insert( position, 1, 'A' );

【讨论】:

    【解决方案2】:

    如果要在特定向量中的特定位置插入字符:

    lines[i].insert(j, 1, c);
    

    【讨论】:

      【解决方案3】:

      希望下面的代码 sn-p 有所帮助,

        std::vector<std::string> line;
        string s(1, c); 
        lines.push_back(s);
      

      对于 std::string 的向量。然后您将 c char 转换为 std::string 并插入到向量中。

      【讨论】:

        【解决方案4】:

        您不能将字符插入到字符串向量中。您必须将该字符转换为字符串。你可以用这种迂回的方式做到这一点:

        string s = "";
        char c = 'a';
        s += c;
        

        或更直接地:

        string s(1,c);
        

        然后将字符串推入向量中:

        lines.push_back(s);
        

        如果要将其插入特定位置,则必须计算该位置,然后:

        lines.insert(position, s);
        

        【讨论】:

          猜你喜欢
          • 2011-10-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-06
          • 1970-01-01
          • 2013-09-21
          相关资源
          最近更新 更多