0

我有

cost char* a="test_r.txt"

我想剥离 _r 并添加 _n 而不是它,使其变为“test_n.txt”并将其保存在 const char* b 中;

最简单的方法是什么?

4

2 回答 2

5

您不能直接修改 的内容a,因此您需要进行一些复制:

std::string aux = a;
aux[5] = 'n';
const char* b = aux.c_str();
于 2012-09-28T14:21:58.707 回答
1

就像之前提到的,如果你把你的const char *放入一个std::string,你可以改变你的字符。关于替换长于一个字符的常量,您可以使用以下find方法std::string

const char *a =  "test_r_or_anything_without_r.txt";

std::string a_copy(a); 
std::string searching("_r");
std::string replacing("_n");
size_t pos_r = 0;

while (std::string::npos != (pos_r = a_copy.find(searching, pos_r)))
{
    a_copy.replace(a_copy.begin() + pos_r,
                   a_copy.begin() + pos_r + searching.length(),
                   replacing.begin(), replacing.end());
}

const char *b = a_copy.c_str();
于 2012-09-28T14:42:33.233 回答