C++:字符串索引和保留标点符号的问题

标签 c++ string indexing

所以我有一个函数,可以从技术上对字符串中第一个字符和最后一个字符之间的字符进行索引,在内部打乱,然后重新添加第一个和最后一个字母。它工作正常,直到我意识到带有标点符号的单词使它变得古怪。我希望标点符号保留在同一个索引中,关于如何去做的任何想法?

string shuffle_word(string word){
    string scramble_str = "", full_scramble = "";
    if(word.length() > 2){
        scramble_str += word.substr(1, word.length()-2);  //indexes the inside string (excludes first and last char)
        random_shuffle(scramble_str.begin(), scramble_str.end());
        full_scramble = word[0] + scramble_str + word[word.length()-1]; //adds first and last char back on
        return full_scramble;
    }
    else{
        return word;
    }
}

最佳答案

使用您对第一个和最后一个字符所做的相同操作的变体可能是最简单的:

  1. 记录每个标点符号的位置
  2. 提取并保存标点符号
  3. 打乱字母
  4. 在其原始位置插入每个标点符号

关于C++:字符串索引和保留标点符号的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19327634/

相关文章:

c++ - 如何在 C++ 中安全地存储 AES 加密 key ?

检索新添加的行的索引 - R 中的 for 循环

mysql - 在 SQL 表中的多个列上查找重复项以创建 UNIQUE 索引

具有模板化类型结构问题的 C++ 函数模板参数

c++ - Boost Test BOOST_CHECK_EQUAL 类型可转换为数组

python - 确定一个 dll 是在调试中构建的还是使用 python 发布的

c++ - 使用 wcsncpy_s 复制字符串时缓冲区太小

java - 在数组列表中搜索字符串并打印该字符串

ruby - 用长字符串替换

c# - 快速将整个MongoDB集合索引到Elastcticsearch