C++中向std::string类型std::vector添加int值的编译报错解决
问题核心原因
- 你的猜测是正确的,之前代码里
push_back("i")的问题就出在i两侧的双引号:带双引号的内容是字符串字面量,会被识别为内容为字母"i"的固定文本,和循环里定义的int型变量i没有任何关联。 - 移除双引号直接写
push_back(i)触发编译报错,根本原因是possible_numbers被定义为存储std::string元素的vector,C++不会对int和std::string做隐式类型转换,因此push_back没有能接收int入参的重载版本,直接抛出类型不匹配的错误。
修正方案
根据你实际的存储需求选择对应改法:
- 如果你只是想存储整数数值,不需要字符串形式的数字
直接把vector的元素类型从std::string改为int,不需要额外类型转换:
#include <iostream> #include <vector> int main() { std::vector<int> possible_numbers; for(int i = 1; i < 101; i++) { possible_numbers.push_back(i); } }
- 如果你确实需要把数字转成对应文本存入string类型的vector
使用C++标准库提供的std::to_string()方法,将int值显式转换为对应的字符串后再传入push_back,记得引入<string>头文件:
#include <iostream> #include <vector> #include <string> int main() { std::vector<std::string> possible_numbers; for(int i = 1; i < 101; i++) { possible_numbers.push_back(std::to_string(i)); } }
内容的提问来源于stack exchange,提问作者Dragon_31
相关产品推荐
相关产品推荐

