-2

我有一个字符串 AB C。我需要在 C++ 中用下划线(_)替换空格。有没有像我们在 perl 或 java 中那样的函数?

输入:

   char* string =  "A B C" 

输出

    A_B_C
4

4 回答 4

7

std::replace

#include <algorithm>
...
std::replace (s.begin(), s.end(), ' ', '_');
于 2013-03-07T08:33:51.513 回答
4

std::replace功能

std::replace( s.begin(), s.end(), 'x', 'y'); // replace all 'x' to 'y'
于 2013-03-07T08:33:56.493 回答
4

是的,std::replace()定义在<algorithm>

#include <algorithm>
#include <string>

int main() {
  std::string input("A B C");
  std::replace(input.begin(), input.end(), ' ', '_');
}
于 2013-03-07T08:34:39.917 回答
2

没有等效的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::stringstd::string方法,请使用std::replace已经建议的其他答案

std::replace(string, string + strlen(string), ' ', '_');

或者如果您已经知道字符串长度

std::replace(string, string + len, ' ', '_');

但请记住,您不能修改常量字符串文字。

如果你想手动做,风格

static inline void manual_c_string_replace(char *s, char from, char to)
{
    for (; *s != 0; ++s)
        if (*s == from)
            *s = to;
}
于 2013-03-07T08:38:19.923 回答