用变音符遍历字符串的问题

时间:2020-05-01 16:10:15

标签: c++

在我的程序中,将要加密一个字符串(可能包含诸如“ä”,“ö”之类的变音符或诸如“ß”之类的其他奇异字符)。

第二个参数为argv[2],并存储在字符串文本中。

函数findInMap在包含26个键(代表列)和字符串向量值(代表行)的映射中向上查找传递的字符。

返回的是代表行和列的整数对的向量。

只要不使用任何外来字符,一切都会按预期进行。如果使用它们,则会发生浮点异常。

// Iterate over all characters in string.
for (int i = 0; i < text.size(); i++) {
  vector<pair<int, int>> possibilites
    = findInMap(cipherTable, text.substr(i, 1));
  // Choose one possibility.
  int choice = rand() % possibilites.size();
  cipherString = cipherString + alphabet[possibilites[choice].first]
                  + to_string(possibilites[choice].second + 1);
}

有趣的是,当我将上面的代码更改为

vector<pair<int, int>> possibilites
  = findInMap(cipherTable, "ü");

忽略输入并仅查找“ü”,不会发生任何错误,但是此for循环执行了两次。字符串“ü”的大小似乎为2。

我怎么

  1. 重复实际字符数
  2. 从文本中提取正确的字符?

非常感谢您的帮助。

完整代码: https://github.com/BooneyNoobington/bbfe/tree/master/

0 个答案:

没有答案