70,023
社区成员




char* csTrim_v2(char* cs)
{
char* ret = cs;
char* pc = new char[strlen(cs) + 1];
int pos = strspn(cs , "\t \n"); // 查找非空白处pos
strcpy(pc , cs + pos);
char* end = pc;
while (*end++) // 找到字符串末位的'\0',
; // 因为上面 end++,实际指针在 '\0'的后一个
end -= 2; // 所以退2格,回到字符串最后一个字母
while (*end == ' ' || *end == '\t' || *end == '\n') {
*end-- = '\0';
}
strcpy(cs , pc);
delete[] pc;
return ret;
}
char* cs_strrev(char* string)
{
char* start = string;
char* left = string;
char ch;
while (*string++) // 找到string 末位的'\0',
; // 因为上面 string++,实际指针在 '\0'的后一个
string -= 2; // 所以退2格,回到字符串最后一个字母
while (left < string) {
ch = *left; // 通过临时变量 ch 进行交换
*left++ = *string;
*string-- = ch;
}
return(start);
}
使用 while 可以把代码写的简短。
/*-----------------------------------------------*/
使用 for 可以方便表示一个区间 遍历
// iterate foo: inserting into bar
for (auto it = std::begin(foo); it!=std::end(foo); ++it)
bar.push_back(*it);
// iterate bar: print contents:
std::cout << "bar contains:";
for (auto it = std::begin(bar); it!=std::end(bar); ++it)
std::cout << ' ' << *it;
std::cout << '\n';