在不将字符串转换为全部大写或全部小写的情况下,在C++中进行不区分大小写的字符串比较的最佳方法是什么?
请说明这些方法是否符合Unicode,以及它们的可移植性.
我正在以两种方式对我的汽车阵列进行排序.一年一年,如下所示.和另一个由make.Make是一个char*如果我只是指向它们,我如何比较字符串?
int i, j;
for(i=0; i<100; i++){
for(j=0; j<100-i; j++){
if(carArray[i]!=NULL && carArray[j]!= NULL && carArray[j+1]!=NULL){
if(carArray[i]->year > carArray[j+1]->year){
swap(carArray[j], carArray[j+1]);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
上述方法适用于int(年).如何使它适用于char指针?
在功能stricmp()和strnicmp()在C99去除?当我尝试针对C99编译时,我总是得到警告隐式声明函数stricmp()(以及strnicmp()).例如,下面的简单代码让我发出警告.
#include<string.h>
#include<stdio.h>
char arr[100]="hello";
char arr2[100]="hEllo";
int main()
{
int n=-1;
printf("%d\n",n);
n=strnicmp(arr,arr2,3); // the same when use the function stricmp();
printf("%d\n",n);
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试针对C99(gcc -Wall -std=c99 main.c -o main)编译这段代码时,我收到了警告.但是当我没有编译它时-std=c99,不会抛出任何警告.但是,即使存在隐式声明的警告,我的代码仍然正常.
这是为什么?那是一个错误吗?如果不是一个错误,那么C99的变化究竟发生了什么?