字符串修剪 指针和整数之间的比较
String Trim Comparison between pointer and integer
我需要检查传入的字符串是否为空且不为空
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++新手。
如果将"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;
}
附言VC10。
以下是我使用的三个函数,可能会有所帮助:
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); }
相关文章:
- 禁止指针和整数之间的比较C++
- ISO C++禁止指针和整数 [-fpermissive] [c++] 之间的比较
- 比较它们之间的元素并获取公共值的键
- 零点和布尔值之间的比较
- 我的 c++ 程序似乎没有发现字符串和我拥有但输入使用 getline 的变量之间的比较
- C++ - 负数和正数之间的比较返回 false
- Qt 错误 iso c++ 禁止指针和整数之间的比较 -permissive
- C++模板参数之间的比较似乎被忽略了
- 为什么C++容器之间存在比较运算符
- 错误:ISO C++禁止在指针和整数 [-fallowive] 之间进行比较
- 数字之间的比较
- C++ - 比较模板和类之间的数据类型
- 获取字符串大小的各种方法之间的比较
- 比较器的两个实现之间的差异
- 如何修复C++中的"指针和整数之间的比较"错误?
- 不同指针类型之间的无效比较:'type*' 和 'type&(*)()'
- 符号和未签名整数表达式之间的比较,以进行循环误差
- 比较C 中移动和智能指针之间的习惯
- 消除有符号和无符号整数表达式之间比较的优雅方式
- 无法理解浮点数和对象实例化之间比较的原因