所以我试图将从字符串中获取的字符插入另一个字符串。 我在这里采取行动: 我想用简单的方法:
someString.insert(somePosition, myChar);
2。我收到一个错误,因为insert需要(在我的情况下)char *或string
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)
成为空格时,程序崩溃。
那么我该怎么做呢?
答案 0 :(得分:34)
std::string::insert
有许多重载。插入单个字符的重载实际上有三个参数:
string& insert(size_type pos, size_type n, char c);
第二个参数n
是将c
插入位置pos
的字符串中的次数(即重复该字符的次数。如果只有想要插入一个角色实例,只需将其传递一个,例如
someString.insert(somePosition, 1, myChar);
答案 1 :(得分:2)
最简单的方法是为自己提供一个将字符转换为字符串的功能。有很多方法可以做到这一点,例如
string ToStr( char c ) {
return string( 1, c );
}
然后你可以简单地说:
someString.insert(somePosition, ToStr(myChar) );
并在其他需要字符串但有char的情况下使用该函数。
答案 2 :(得分:0)