我需要检查传入的字符串是否为空且不为空
method(const char* utf8char){
...
string trim(char const *str){
while(!isalnum(*str)) str++;
end = str + strlen(str) - 1;
while(end > str && !isalnum(*end)) end--;
return string(str, end+1);
}
警告:指针和整数之间的比较
抱歉愚蠢的问题我是C ++的新手。
答案 0 :(得分:1)
如果'end'被声明为const char *:
,则代码适用于我#include <string>
using std::string;
string trim(char const *str){
while(!isalnum(*str)) str++;
char const *end = str + strlen(str) - 1;
while(end > str && !isalnum(*end)) end--;
return string(str, end+1);
}
int _tmain(int argc, _TCHAR* argv[])
{
char buf[] = " abc ";
printf("%s", trim(buf).c_str()); // got "abc"
return 0;
}
PS。 VC10。
答案 1 :(得分:1)
以下是我使用的三个可能有用的功能:
sch参数是一组要修剪的字符。
void LTRIM(std::string& s, const char *sch)
{
std::string ss=sch;
int i=0, n=s.length();
while ((i<n) && (ss.find(s.at(i),0)!=std::string::npos)) i++;
s = (i>0)?s.substr(i,n-i):s;
}
void RTRIM(std::string& s, const char *sch)
{
std::string ss=sch;
int n = s.length()-1;
int i=n;
while ((i>0) && (ss.find( s.at(i),0)!=std::string::npos)) i--;
s = (i<n)?s.substr(0,i+1):s;
}
void TRIM(std::string& s, const char *sch) { LTRIM(s, sch); RTRIM(s, sch); }