#include <iostream>
using namespace std;
int main (int argc, char **argv)
{
int i = 0, j = 0;
string temp;
for (i = 1; i < argc; ++i)
{
for (j = i+1; j < argc; ++j)
{
if (argv[i] > argv[j])
{
temp = argv[i];
argv[i] = argv[j];
argv[j] = temp;
}
}
}
}
我不知道为什么,但我在编译时遇到了这个错误。
trial2.cpp:109:14: error: assigning to 'char *' from incompatible type 'string' (aka'basic_string, allocator >') argv[j] = temp; ^ ~~~~ //temp is my temporary string.
最佳答案
代码中有两个错误:
- 正如@hyde 指出的那样,
temp
应该是char*
而不是string
-
argv[i] > argv[j]
看起来像指针比较,即它会比较地址的值而不是比较字符串。我建议使用strcmp
比较两个的方法char*
(然后你需要#include <string>
才能使用这个方法)
建议的代码(不确定是否完全没有错误,但希望是这样):
#include <iostream>
#include <string>
using namespace std;
int main (int argc, char **argv)
{
int i = 0, j = 0;
char* temp;
for (i = 1; i < argc; ++i)
{
for (j = i+1; j < argc; ++j)
{
if (strcmp(argv[i] , argv[j]) > 0)
{
temp = argv[i];
argv[i] = argv[j];
argv[j] = temp;
}
}
}
for(i = 0; i < argc; i++){
cout << argv[i]<< endl;
}
}
请注意,最后一个 for 循环是检查输出是否已排序。我试过你的比较argv[i] > argv[j]
而不是 strcmp
它似乎在我的机器上不起作用。
关于c++ - 如何在 C++ 中按字母顺序对标准输入字符串进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39324279/