C++ 类型的值不能用于初始化 类型的实体,请优化一下这段代码
时间: 2024-02-12 12:09:05 浏览: 115
好的,我来优化一下这段代码,避免出现“C++ 类型的值不能用于初始化 类型的实体”的问题。
```c++
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
void sort_strings(std::vector<std::string>& strings)
{
std::sort(strings.begin(), strings.end(), std::greater<std::string>());
}
int main()
{
std::vector<std::string> strings;
int i;
// 输入五个字符串
for (i = 0; i < 5; i++) {
std::string str;
std::cout << "请输入第" << i + 1 << "个字符串:";
std::cin >> str;
strings.push_back(str);
}
// 排序
sort_strings(strings);
// 输出结果
std::cout << "排序后的字符串:" << std::endl;
for (i = 0; i < 5; i++) {
std::cout << strings[i] << std::endl;
}
return 0;
}
```
在这个优化后的程序中,我们使用了 STL 中的 `vector` 类来存储字符串。在输入字符串时,我们使用了 `std::cin` 来读入字符串,而不是使用 `scanf` 函数。在程序中,我们使用了 STL 中的 `sort` 函数来对字符串进行排序,同时使用了 `std::greater<std::string>` 函数对象来指定排序的方式。在输出结果时,我们使用了 `std::cout` 来输出字符串,而不是使用 `printf` 函数。
这样,我们避免了使用 C 风格的字符串指针和数组,使用了更加现代化的 C++ STL 来处理字符串,使得代码更加简洁、易读、易维护,同时也提高了代码的可移植性和兼容性。
阅读全文