应优先使用std::string数组或vector而非C风格字符数组;定义时显式指定类型和大小更稳妥;注意生命周期、内存管理及输入读取时的换行符问题。
string 存入 string 数组:先定义,再赋值
不是所有“数组”都支持直接初始化一堆 std::string 字面量——你得明确告诉编译器这是 std::string 类型的数组,而不是 char* 或 C 风格字符串数组。
常见错误是写成:string arr[] = {"hello", "world"}; —— 这段代码在 C++11 及以后其实能编译,但底层依赖隐式构造,容易在老编译器或严格模式下失败;更稳妥的是显式指定类型和大小,或用 std::vector 替代。
- 推荐方式(C++11+):
std::string arr[] = {"hello", "world", "cpp"};—— 编译器自动推导长度为 3 - 显式指定大小(避免意外截断):
std::string arr[3] = {"hello", "world", "cpp"}; - 如果数量不确定或会动态增删,改用
std::vector:std::vector vec = {"a", "b", "c"};
别把 char 数组当 string 数组用
写 char arr[5][20]; 然后试图存 "hello" 是可行的,但这不是 std::string 数组——它不带内存管理、不能直接用 + 拼接、.size()、.find() 等方法全失效。
典型翻车场景:
立即学习“C++免费学习笔记(深入)”;