C ++:写入std :: string中的特定索引位置

时间:2015-01-25 05:33:19

标签: c++

嗨,我是社区的新手。

我对std :: string有疑问。 是否有可能写入字符串的特定索引,保持字符串的其余部分为空?

e.g。

std::string tempString = ""; 
tempString ->insert(10, "Some String I want to Insert"); 
//index position and string to insert

并且最终答案是tempString =“__________Some我要插入的字符串”

其中字符0到9未初始化。

一旦分配了内存,就可以使用char *。 但这可能与std :: strings一起使用吗?

提前感谢您,感谢您邀请我加入这个社区:)

3 个答案:

答案 0 :(得分:1)

给出一些插入位置

size_t insertion_position = 10;

要插入一些std::stringconst char*

const char *text = "Some String I want to Insert";

这样可以有效地完成。

std::string tempString( insertion_position, ' ' );
tempString += text; 

或作为一个班轮:

std::string tempString = std::string( insertion_position, ' ' ) + text; 

答案 1 :(得分:0)

  

是否可以写入字符串的特定索引,保留字符串[未初始化]的其余部分?

没有

std::basic_string并非旨在表示未初始化值的集合。

答案 2 :(得分:0)

检查一下,你可以使用stringstream而不是cout。然后你可以将输出变成一个字符串而不是看到它被转储到控制台上

// using the fill character
#include <iostream>     // std::cout

int main () {
  char prev;

  std::cout.width (10);
  std::cout << 40 << '\n';

  prev = std::cout.fill ('x');
  std::cout.width (10);
  std::cout << 40 << '\n';

  std::cout.fill(prev);

  return 0;
}

输出:         40 xxxxxxxx40