c++ 将std::string中的字符分配给std::vector时出现问题< std::string>

v64noz0r  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(136)

问题

我试着把std::string的每个字母都赋值给std::vector<std::string>。我没有使用std::vector<char>,因为这些字符会混合,例如。3 -> 30。不幸的是,std::vector中不是字母,而是ASCII码。有趣的是,当我尝试使用旧的C风格数组时,转换顺利完成,并且我在std::string数组中有字符串。

编码

  1. template <typename numTyp>
  2. void numberAsRoman<numTyp>::convert()
  3. {
  4. numberAsArray = std::to_string(number); // numberAsArray is (int) member of class
  5. // I convert it to std::string.
  6. std::vector<std::string> vecOfNum; // Make vector
  7. for(int i = 0; i < numberAsArray.length(); i++) // Loop to assign
  8. {
  9. vecOfNum.push_back(std::to_string(numberAsArray.at(i))); // I assign every letter
  10. std::cout << vecOfNum.at(i) << " "; // to vector and print it.
  11. }
  12. std::cout << "\n\n\n";
  13. }

执行时看到的

vector正在打印51和`50。我检查了一下,它符合ASCII码:

  1. 51 - 3
  2. 50 - 2
zynd9foi

zynd9foi1#

试试这个

  1. vecOfNum.emplace_back(1, numberAsArray.at(i)));

std::string std::to_string(char c)重载不存在。std::string to_string(int value);的用法如下

  1. int value = numberAsArray.at(i); // c promotes to int getting ascii code of the containing character
  2. vecOfNum.push_back(std::to_string(value));

相关问题