我有一个字符串 111;222;333
,我想将其转换为三个整数。
首先,我将字符串分割:
std::vector<std::string> split(...){ ... };
返回值以推导类型存储在
vector
中。std::vector splitVals {split(...)};
如果我想将这些值转换为整数,可以像这样:
int foo1 {std::stoi(splitVals[0])};
stoi
函数报错了,因为向量的推导类型是std::vector<std::vector<std::string>, std::allocator<std::vector<std::string>>>
。但是如果我不让类型被推导,那么一切都能正常工作。
std::vector<std::string> splitVals {split(...)};
int foo1 {std::stoi(splitVals[0])};
std::stoi
现在可以工作了,因为输入值是std::string
。问题似乎始于向一个返回std::vector<std::string>
的函数初始化向量。有没有一种方法可以从C++17类模板参数推断中获益,而没有这些限制?
std::vector<int> v{{7, 10, 12}};
),但这将破坏向后兼容性。嗯,让我们看看吧。最终,你必须自己做出决定;尽管现在的技术水平已经很高,但我的决定已经定了。 - Aconcagua