通过查找令牌 char 拆分 char 数组
split a char array by finding a token char
我不明白为什么这个功能不起作用。
我想 return 一个从 char 数组中删除的字符串,该字符串传递到函数的索引处,它找到了一个标识字符。有什么明显的我想念的吗?实际上,这只是 return 输入 char[]...
的第一个字母
#include <iostream>
#include <cstring>
using namespace std;
string trim(char in[], char token){
char A[300];
for(int i = 0; i < strlen(in); i++){
if(in[i] != token){
A[i] = in[i];
} else
A[i] = '[=10=]';
break;
}
return A;
}
int main()
{ char statement[] = {"weight of car is ?1 ton"};
cout << trim(statement, '?') << endl;
return 0;
}
因为您 break;
在第一次迭代中。使用块来避免它。
#include <iostream>
#include <cstring>
using namespace std;
string trim(char in[], char token){
char A[300];
for(int i = 0; i < strlen(in); i++){
if(in[i] != token){
A[i] = in[i];
} else {
A[i] = '[=10=]';
break;
}
}
return A;
}
int main()
{ char statement[] = {"weight of car is ?1 ton"};
cout << trim(statement, '?') << endl;
return 0;
}
请注意,多次调用 strlen
并不是一个好主意。
这个应该更好:
#include <iostream>
using namespace std;
string trim(char in[], char token){
char A[300];
bool token_found = false;
for(int i = 0; in[i] != '[=11=]'; i++){
if(in[i] != token){
A[i] = in[i];
} else {
A[i] = '[=11=]';
token_found = true;
break;
}
}
if (token_found) {
return A;
} else {
return in;
}
}
int main()
{ char statement[] = {"weight of car is ?1 ton"};
cout << trim(statement, '?') << endl;
return 0;
}
我不明白为什么这个功能不起作用。 我想 return 一个从 char 数组中删除的字符串,该字符串传递到函数的索引处,它找到了一个标识字符。有什么明显的我想念的吗?实际上,这只是 return 输入 char[]...
的第一个字母#include <iostream>
#include <cstring>
using namespace std;
string trim(char in[], char token){
char A[300];
for(int i = 0; i < strlen(in); i++){
if(in[i] != token){
A[i] = in[i];
} else
A[i] = '[=10=]';
break;
}
return A;
}
int main()
{ char statement[] = {"weight of car is ?1 ton"};
cout << trim(statement, '?') << endl;
return 0;
}
因为您 break;
在第一次迭代中。使用块来避免它。
#include <iostream>
#include <cstring>
using namespace std;
string trim(char in[], char token){
char A[300];
for(int i = 0; i < strlen(in); i++){
if(in[i] != token){
A[i] = in[i];
} else {
A[i] = '[=10=]';
break;
}
}
return A;
}
int main()
{ char statement[] = {"weight of car is ?1 ton"};
cout << trim(statement, '?') << endl;
return 0;
}
请注意,多次调用 strlen
并不是一个好主意。
这个应该更好:
#include <iostream>
using namespace std;
string trim(char in[], char token){
char A[300];
bool token_found = false;
for(int i = 0; in[i] != '[=11=]'; i++){
if(in[i] != token){
A[i] = in[i];
} else {
A[i] = '[=11=]';
token_found = true;
break;
}
}
if (token_found) {
return A;
} else {
return in;
}
}
int main()
{ char statement[] = {"weight of car is ?1 ton"};
cout << trim(statement, '?') << endl;
return 0;
}