你可以使用这个std::transform功能:
std::vector<int> ints(str.size());
std::transform(str.begin(), str.end(), ints.begin(),
[](char c) { return c - '0'; });
Run Code Online (Sandbox Code Playgroud)
如果你的编译器还不支持lambdas,你可以使用常规函数:
int get_digit(char c) { return c - '0'; }
// ...
std::transform(str.begin(), str.end(), ints.begin(), get_digit);
Run Code Online (Sandbox Code Playgroud)
要执行相反的操作,您可以这样做:
std::string s(ints.size(), 0);
std::transform(ints.begin(), ints.end(), s.begin(),
[](int i) { return i + '0'; });
Run Code Online (Sandbox Code Playgroud)