C++ 如何在C+中按字母顺序对标准输入字符串进行排序+;? #包括 使用名称空间std; int main(int argc,字符**argv) { int i=0,j=0; 字符串温度; 对于(i=1;i)分配给“char*”) argv[j]=温度; ^ ~~~~ //temp是我的临时字符串
我不知道为什么,但我在编译它时遇到了这个错误 trial2.cpp:109:14:错误:从不兼容的类型“string”(也称为“basic_string,allocator>)分配给“char*”) argv[j]=温度; ^ ~~~~ //temp是我的临时字符串C++ 如何在C+中按字母顺序对标准输入字符串进行排序+;? #包括 使用名称空间std; int main(int argc,字符**argv) { int i=0,j=0; 字符串温度; 对于(i=1;i)分配给“char*”) argv[j]=温度; ^ ~~~~ //temp是我的临时字符串,c++,C++,我不知道为什么,但我在编译它时遇到了这个错误 trial2.cpp:109:14:错误:从不兼容的类型“string”(也称为“basic_string,allocator>)分配给“char*”) argv[j]=温度; ^ ~~~~ //temp是我的临时字符串 代码中有两个错误: 正如@hyde指出的,temp应该是char*而不是string argv[i]>argv[j]看起来像指针比较,即它将比较地址的值,而不是比较字符串。我建议使用strcmp方法来比较两个char*(然后您需要#
代码中有两个错误:
temp
应该是char*
而不是string
argv[i]>argv[j]
看起来像指针比较,即它将比较地址的值,而不是比较字符串。我建议使用strcmp
方法来比较两个char*
(然后您需要#包括来使用此方法)
#包括
#包括
使用名称空间std;
int main(int argc,字符**argv)
{
int i=0,j=0;
字符*温度;
对于(i=1;i0)
{
温度=argv[i];
argv[i]=argv[j];
argv[j]=温度;
}
}
}
对于(i=0;i cout由于无法将typestring
转换为char*
,因此会出现错误。但它必须反向工作(因此您的temp=argv[i];
不会失败)。
不要写信给argv(你可以,但我不推荐)。
简单方法:在排序之前,将argv
复制到字符串的某个数组中:
`
string*argv_strings=新字符串[argc-1];
对于(int i=0;i
`
并使用argv_字符串
代替argv
不要忘记<代码>删除<代码>指针。不可能在不违反C++标准的情况下执行此操作。,您需要创建自己的指针向量和排序that@PcAF...Error不是因为字符串头。这是因为string
不能隐式转换为char*
。我们必须使用string::c_str()
函数。另外,有没有具体的原因来做这样的冒泡排序,而不仅仅是在字符串列表上调用“sort”呢?比如:@sgarizvi哦,我把单词不兼容的读成不完整的,我会删除我的注释。把字符串临时;
改成字符*临时;
,这可能会对你的pa起作用Articular compiler/toolchain/OS。然后了解C风格字符串和std::string
之间的区别。当然,必须注意的是,C++更好、更强大解决方法是首先将C字符串从argv
复制到std::vector
,然后对其进行排序。uhh这是真的。谢谢提示:P@hyde谢谢你们,我使用字符串向量存储所有argv,然后对它们进行排序。
#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;
}
}
}
}
#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;
}
}
string *argv_strings = new string[argc - 1];
for(int i = 0; i < argc - 1; ++i)
{
argv_strings[i] = new string(argv[i + 1]);
}