我有一个字符串 AB C。我需要在 C++ 中用下划线(_)替换空格。有没有像我们在 perl 或 java 中那样的函数?
输入:
char* string = "A B C"
输出
A_B_C
有std::replace
#include <algorithm>
...
std::replace (s.begin(), s.end(), ' ', '_');
有std::replace
功能
std::replace( s.begin(), s.end(), 'x', 'y'); // replace all 'x' to 'y'
是的,std::replace()
定义在<algorithm>
:
#include <algorithm>
#include <string>
int main() {
std::string input("A B C");
std::replace(input.begin(), input.end(), ' ', '_');
}
没有等效的replace
成员函数。
您必须先search
获取空间,然后再使用std::string::replace
char *string = "A B C";
std::string s(string);
size_t pos = s.find(' ');
if (pos != std::string::npos)
s.replace(pos, 1, "_");
只需 a char*
,将其放在 a 中std::string
,然后在此处应用其中一个答案。
如果您想完全避免std::string
和std::string
方法,请使用std::replace
已经建议的其他答案
std::replace(string, string + strlen(string), ' ', '_');
或者如果您已经知道字符串长度
std::replace(string, string + len, ' ', '_');
但请记住,您不能修改常量字符串文字。
如果你想手动做,c风格
static inline void manual_c_string_replace(char *s, char from, char to)
{
for (; *s != 0; ++s)
if (*s == from)
*s = to;
}