C:将字符插入字符串

新手上路,请多包涵

所以我试图将我从一个字符串中得到的字符插入到另一个字符串中。在这里我我的行动: 1. 我想用简单的:

 someString.insert(somePosition, myChar);

2. 我收到一个错误,因为插入需要(在我的情况下)char* 或字符串

3. 我正在通过 stringstream 将 char 转换为 char*:

 stringstream conversion;
char* myCharInsert;
conversion << myChar //That is actually someAnotherString.at(someOtherPosition) if that matters;
conversion >> myCharInsert;
someString.insert(somePosition, myCharInsert);

4. 一切似乎都编译成功了,但是程序崩溃了

conversion >> myCharInsert;

线。

5.我正在尝试用字符串替换 char*:

 stringstream conversion;
char* myCharInsert;
conversion << myChar //That is actually someAnotherString.at(someOtherPosition) if that matters;
conversion >> myCharInsert;
someString.insert(somePosition, myCharInsert);

一切似乎都很好,但是当 someAnotherString.at(someOtherPosition) 变成空格时,程序崩溃了。

那么我该如何正确地做到这一点呢?

原文由 user380041 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 329
2 个回答

有许多 std::string::insert 的重载。插入单个字符的重载实际上有三个参数:

 string& insert(size_type pos, size_type n, char c);

第二个参数 n 是插入 c 到字符串中位置 pos 的次数(即重复字符的次数。如果您只想插入一个字符实例,只需传递一个,例如,

 someString.insert(somePosition, 1, myChar);

原文由 James McNellis 发布,翻译遵循 CC BY-SA 3.0 许可协议

最简单的就是为自己提供一个将字符转换为字符串的函数。有很多方法可以做到这一点,例如

string ToStr( char c ) {
   return string( 1, c );
}

然后你可以简单地说:

 someString.insert(somePosition, ToStr(myChar) );

并在需要字符串但有字符的其他情况下使用该函数。

原文由 anon 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题