文字列 AB C が 1 つあります。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, "_");
だけでchar*
、最初に a に入れてからstd::string
、ここで答えの 1 つを適用します。
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;
}