两个错误:
1:Warning 1 warning C4018: '<' : signed/unsigned mismatch
2:Error 2 error C3861: 'funcNewStr': identifier not found
我该如何解决这个问题? 我很乐意帮助您并解释我的错误,以便代码正常工作。 程序收到一个句子并从每个单词中取出第一个字母并组成一个新字符串。
#include <iostream>
#include <string>
using namespace std;
int main(){
int size = 50;
char* ptr = new char[size];
for(int i = 0; i < size; i++){
ptr[i] = NULL;
}
cout << "Enter a string: " << endl;
string str;
getline(cin, str);
for (int i = 0; i<str.length(); i++)
ptr[i] = str[i];
funcNewStr(ptr, size);
system("pause");
return 0;
}
char funcNewStr(char* ptr,int size){//my function
char* newStr = new char[size];
for (int i = 0; i < size; i++){
newStr[i] = NULL;
}
newStr[0] = ptr[0];
int j = 1;
for (int i = 0; i < size; i++){
if (ptr[i] == ' '){
newStr[j] = ptr[i + 1];
j++;
}
}
return *newStr;
}
感谢的。
答案 0 :(得分:0)
str.length()
是unsigned
,因此您可以修复警告,取而代之:
for (int i = 0; i<str.length(); i++)
通过
for (unsigned i = 0; i<str.length(); i++)
您可以在funcNewStr
:
main
的原型
char funcNewStr(char* ptr,int size);
int main(){
...
}
答案 1 :(得分:0)
您需要在main()
之前为您的函数添加原型
像这样:
char funcNewStr(char* ptr,int size);
int main(){..}
str.length()
也是未签名的,因此您需要将i
声明为无符号。
还有一件事
using namespace std;
是不好的做法。这是link解释。