相关疑难解决方法(0)

用单引号(')替换双引号('')

假设我有一个字符串:

argsStr = "server ('m1.labs.terad  ''ata.com') username ('us ''er5') password('user)5') dbname ('def\\ault')";
Run Code Online (Sandbox Code Playgroud)

现在我使用以下代码来提取令牌:

'm1.labs.terad  ''ata.com'  <- token1
'us ''er5'                    <-token2
'user)5'                    <-token3
'def\ault'                  <-token4
Run Code Online (Sandbox Code Playgroud)

码:

regex re("(\'(.*?)\'\)");
typedef std::vector<std::string> StringVector;
StringVector arg_values;
boost::regex re_arg_values("('[^']*(?:''[^']*)*')");
boost::sregex_token_iterator name_iter_start(argsStr.begin(),argsStr.end(), re_arg_values, 0),name_iter_end;
std::copy(value_iter_start, value_iter_end,std::back_inserter(arg_values)); 
//putting the token in the string vector.
Run Code Online (Sandbox Code Playgroud)

将它放入字符串向量后,如何转换标记/字符串以用单引号替换双引号:

例如:

'm1.labs.terad ''ata.com' 应该成为'm1.labs.terad 'ata.com'并且 'us ''er5' 应该成为'us 'er5'.

我可以使用boost :: replace_all吗?

c++ string boost replace

5
推荐指数
2
解决办法
623
查看次数

C++:如何用另一个字符替换字符串中字符的所有实例?

我在互联网上找到了这种方法:

//the call to the method: 
cout << convert_binary_to_FANN_array("1001");

//the method in question: 
string convert_binary_to_FANN_array(string binary_string)
{
string result = binary_string;

replace(result.begin(), result.end(), "a", "b ");
replace(result.begin(), result.end(), "d", "c ");
return result;
}
Run Code Online (Sandbox Code Playgroud)

但这给了

main.cpp:30: error: no matching function for call to ‘replace(__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, const char [2], const char [3])’
Run Code Online (Sandbox Code Playgroud)

c++

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

C++字符串替换不能按预期工作

关于C++替换函数的小问题.我正在逐行解析每行文本输入.文本文件示例:

SF27_34KJ
EEE_30888
KPD324222
4230_333
Run Code Online (Sandbox Code Playgroud)

我需要删除每一行的所有下划线并用逗号替换它.当我尝试这样的事情时:

mystring.replace(mystring.begin(),mystring.end(),'_',',');

在每一行 - 而不是" SF27,34KJ "我得到95x" , "char.可能有什么不对?

c++ string replace

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

std :: replace难度大

我还是STL的新手,想要用ch字符串替换所有出现的字符串k.

我尝试了以下方法:

std::replace (str.begin(), str.end(), "ch", "k");
Run Code Online (Sandbox Code Playgroud)

但它抛出了这个错误:

no matching function for call to ‘replace(__gnu_cxx::__normal_iterator<char*,
  std::basic_string<char, std::char_traits<char>, std::allocator<char> > >,
  __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>,
  std::allocator<char> > >, const char [2], const char [1])
Run Code Online (Sandbox Code Playgroud)

replace在这种情况下我如何开始工作?

注意:我看到了一个类似的问题但在这种情况下OP使用"blah"和'b'作为要替换的参数,但这里我的两个参数都是字符串.

c++ string replace stl

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

使用C ++将一个字符串替换为另一个字符串

问题是我不知道输入字符串的长度。如果输入字符串为“ yyyy”,则只能替换我的函数。我认为解决方案是,首先,我们将尝试将输入字符串转换回“ yyyy”,并使用我的函数完成工作。

这是我的功能:

void findAndReplaceAll(std::string & data, std::string toSearch, std::string replaceStr)
{
    // Get the first occurrence
    size_t pos = data.find(toSearch);

    // Repeat till end is reached
    while( pos != std::string::npos)
    {
        // Replace this occurrence of Sub String
        data.replace(pos, toSearch.size(), replaceStr);
        // Get the next occurrence from the current position
        pos = data.find(toSearch, pos + replaceStr.size());
    }
}
Run Code Online (Sandbox Code Playgroud)

我的主要功能

std::string format = "yyyyyyyyyydddd";
findAndReplaceAll(format, "yyyy", "%Y");
findAndReplaceAll(format, "dd", "%d");
Run Code Online (Sandbox Code Playgroud)

我的预期输出应为:

%Y%d
Run Code Online (Sandbox Code Playgroud)

c++ str-replace c++14

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

如何使用 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
查看次数

C ++-用%20替换空格

我正在寻找一种准备用作URL的字符串的方法。

代码的基础是您键入要查找的内容,并使用您键入的内容打开浏览器。我正在学习C ++,因此这是一个学习程序。并且请尽可能具体,因为我是C ++的新手。

这是我正在尝试做的事情:

cin >> s_input;
transform(s_input.begin(), s_input.end(), s_input.begin(), tolower);
s_input = "start http://website.com/" + s_input + "/0/7/0";
system(s_input.c_str());
Run Code Online (Sandbox Code Playgroud)

但是我试图用'%20'替换用户输入的所有空格。我已经找到了一种这样的方法,但是一次只能处理一个字母,而我需要使用一个完整的字符串而不是一个字符数组。这是我尝试过的方法:

cin >> s_input;
transform(s_input.begin(), s_input.end(), s_input.begin(), tolower);
using std::string;
using std::cout;
using std::endl;
using std::replace;
replace(s_input.begin(), s_input.end(), ' ', '%20');
s_input = "start http://website.com/" + s_input + "/0/7/0";
system(s_input.c_str());
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

c++ visual-c++

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

标签 统计

c++ ×7

replace ×4

string ×4

boost ×1

c++14 ×1

c++20 ×1

std-ranges ×1

stl ×1

str-replace ×1

visual-c++ ×1