相关疑难解决方法(0)

用另一个字符串替换字符串的一部分

在C++中是否可以用另一个字符串替换字符串的一部分?

基本上,我想这样做:

QString string("hello $name");
string.replace("$name", "Somename");
Run Code Online (Sandbox Code Playgroud)

但我想使用标准C++库.

c++ string replace substring std

171
推荐指数
8
解决办法
27万
查看次数

如何查找和替换字符串中所有出现的子字符串?

我需要搜索一个字符串并编辑它的格式.

到目前为止,我可以替换第一次出现的字符串,但是我无法在下一次出现此字符串时这样做.

这就是我的工作,有点像:

if(chartDataString.find("*A") == string::npos){ return;}
else{chartDataString.replace(chartDataString.find("*A"), 3,"[A]\n");}
Run Code Online (Sandbox Code Playgroud)

如果找不到字符串,则根本不打印任何内容,因此不好.

我知道我需要遍历整个字符串chartDataString并替换所有出现的事件.我知道有很多类似的帖子,但我不明白(像这样用另一个子串C++替换子串)

我也尝试过这样的事情来循环遍历字符串:

string toSearch = chartDataString;
string toFind = "*A:";
for (int i = 0; i<toSearch.length() - toFind.length(); i++){
   if(toSearch.substr(i, toFind.length()) == toFind){
       chartDataString.replace(chartDataString.find(toFind), 3, "[A]\n");   
   }
}
Run Code Online (Sandbox Code Playgroud)

编辑考虑到建议,这在理论上应该有效,但我不知道为什么不这样做

size_t startPos=0;
string myString = "*A";
while(string::npos != (startPos = chartDataString.find(myString, startPos))){
    chartDataString.replace(chartDataString.find(myString, startPos), 3, "*A\n");
    startPos = startPos + myString.length();
}   
Run Code Online (Sandbox Code Playgroud)

c++ string algorithm str-replace

11
推荐指数
3
解决办法
2万
查看次数

用一些字符串替换字符串中的char


我想用字符串替换字符串中的字符.我可以就地做吗?由于新字符串的长度大于原始字符串.问题是我可以使用额外的缓冲区吗?例如

void replaceChar(std::string &input, std::string replacementString, char charToReplace)
{
//some code here. No additional buffer
}

void main(){

  std::string input = "I am posting a comment on LinkedIn";
  std::string replacementString = "pppp";
  char charToReplace = 'o';
  replaceChar(input, replacementString, charToReplace);
}
Run Code Online (Sandbox Code Playgroud)

我只想要策略(算法).如果算法的设计保持一定的语言,一旦它被启动就不会动态增加或减少字符串长度,这将是很好的

c++ string algorithm

3
推荐指数
1
解决办法
8600
查看次数

如何使用 C++ std::ranges 替换字符串中的子字符串?

我知道如何使用 std::replace 替换向量中的字符,如下所示:ranges::replace

我会撒谎对字符串中的子字符串做类似的事情。例如:

std::string str{"The quick brown fox jumped over the lazy dog.";
std::ranges::replace(str, "the", "a");
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误:

错误:与调用 '(const std::ranges::__replace_fn) (std::string&, const char [4], const char [2])' 不匹配

或者如果我使用字符串

错误:与调用 '(const std::ranges::__replace_fn) (std::string&, std::string&, std::string&)' 不匹配

它适用于字符,但不适用于子字符串。

有任何想法吗?

我已成功使用循环 andstring.findstring.replace,但想使用范围。

c++ string replace c++20 std-ranges

2
推荐指数
1
解决办法
1478
查看次数

如何在Objective C中用另一个子串替换一个子串?

我想NSString用Objective C中的另一个子串替换子串.

我知道如何找到我想要替换的子字符串:

        NSRange range = [string rangeOfString:substringIWantToReplace];
        NSString *substring = [string substringFromIndex:NSMaxRange(range)];
Run Code Online (Sandbox Code Playgroud)

但是当涉及到实际移除/替换它时,我有点困惑.我是否在使用另一个子串C++替换substring的C++方法?或者C方法如何替换c中的子串??在Objective-C上有一个相关的问题:子串和替换,但是有问题的字符串是一个URL,所以我认为我不能使用答案.

substring objective-c nsstring

1
推荐指数
1
解决办法
1686
查看次数

将\字符插入字符串

我试着将\ charcter插入一个字符串,所以我会得到

C:\\ Users \\ dave \\ Desktop \\ XY.txt而不是C:\ Users\georg\Desktop\XY.txt

这是代码但由于某种原因它不起作用

string q="C:\Users\georg\Desktop\XY.txt";
char x='\\';


for (int i = 0; i < q.length(); ++i) {
if (q[i] == '\\')
 q.insert(i,4,x);
 }
Run Code Online (Sandbox Code Playgroud)

c++

1
推荐指数
1
解决办法
108
查看次数

用另一个字符序列替换C ++ std :: string中的字符/字符序列

我想,以取代所有出现&在我std::string&amp;。这是代码段代码 链接

#include <algorithm>
#include <string>
#include <iostream>
int main()
{
    std::string st = "hello guys how are you & so good & that &";
    std::replace(st.begin(), st.end(), "&", "&amp;");
    std::cout << "str is" << st;
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

它显示了std :: replace无法替换字符串的错误,但仅适用于字符。 我知道我仍然有逻辑可以完成我的工作,但是有什么干净的C ++方式可以做到这一点吗?有内置功能吗?

c++ string replace stdstring c++11

1
推荐指数
1
解决办法
603
查看次数