https://www.cnblogs.com/bljw-02/p/16321600.html

字符串长度

https://blog.csdn.net/Terminal_ve/article/details/126512580

string与char的区别

https://blog.csdn.net/qq_42127861/article/details/120230040

字符串转化

C++ String 与 char* 相互转换

或者通过string的构造方法:https://blog.csdn.net/yueyaquanboy/article/details/22909211

  • 其它类型转string
    c++11

    // #include <string>
    string to_string(int _Val);
  • string16、string8与char*之间的转换

1.String16转const char*
String16 name16 = String16("Hello World");
String8 name8 = String8(name16);
const char *buffer = name8.string();

验证:
printf("buffer = %s\n",buffer);

注意:
String16.string()其实是const char16_t类型
String8.string()是const char*类型
所以转换之前需要将String16转换成const char*类型

字符串比较

  • 判断字符串是否相等:
    strcmp
    https://blog.csdn.net/2301_76618602/article/details/133135992
    注意strcmp如果与字符比较,字符只能是双引号,不能使用单引号。

  • 空字符串判断

    1. 使用string类的成员函数empty(),判断是否为空:
      string str;
      if(str.empty()){  // 为空成立
      ...
      }
    2. 使用size(),判断字符串长度,如果为0,则为空:
      string str;
      if(str.size() == 0){   // 为空成立
      ...
      }
    3. 与空串""比较,相等,则为空:
      string str;
      if(str == ""){   // 为空成立
      ...
      }

字符串拼接

sprintf有个坑爹的bug:意外的将">"输出为"<"
如果sprintf (cmd, ""ffmpeg_primary -re -stream_loop -1 -i %s -acodec pcm_s16be -f rtsp -rtsp_transport udp rtsp://%s/live/%s > /dev/null &"", videoFilePath.c_str(), bmcIp.c_str(),videoName.c_str()); 则cmd结果中的>会变为<,但是如果把format参数定义成一个变量则正常。

字符串切割

https://blog.csdn.net/sinat_31608641/article/details/121184945

用C语言中的strtok 函数来进行分割,原型: char strtok(char str, const char *delim);strtok函数包含在头文件中,对于字符数组可以采用这种方法处理。

#include <string.h>
#include <stdio.h>

int main(){
    char s[] = "a,b*c,d";
    const char *sep = ",*"; //可按多个字符来分割
    char *p;
    p = strtok(s, sep);  //返回第一个子串
    while(p){
        printf("%s ", p);
        p = strtok(NULL, sep);  //NULL表示接着上次切割了之后的字符串切割
    }
    printf("\n");
    return 0;
}
//输出: a b c d

字符串相关报错

  • invalid conversion from ‘const char’ to ‘char
    string类的c_str函数返回的是const char类型,如果将它用作实参传递给char的形参就会报这个错误
    解决方法:在调用是加(char )转换一下,比如(char )cfgfile.c_str()

  • warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
    https://blog.csdn.net/aa804738534/article/details/114983672

char* p = "abc";  // valid in C, invalid in C++

C++中#include与#include的区别

https://blog.csdn.net/starboybenben/article/details/49802555

判断字符串中是否包含某个字符

https://www.cnblogs.com/ruingking/p/13463035.html?ivk_sa=1024320u

判断字符串是否为空

char* p = "123456";
if(p != nullptr && p[0] == '\0')
{
    //为空
}
else if(p == nullptr)
{

}
else
{
    //不为空
}

对于string,可以直接使用函数判断。
https://blog.csdn.net/Xuebing_han/article/details/78143560

字符串转数字

https://blog.csdn.net/xiaowang_lj/article/details/125333628
https://blog.csdn.net/zhangqianqian57/article/details/117251129
atoi或者stoi

https://blog.csdn.net/szlcw1/article/details/44981377

坑:通过strcat得到的字符串,转换成数字可能是0,需要用strcpy复制一下再转。

字符是否可打印

std::isprint

清除空格

https://blog.csdn.net/sinat_31608641/article/details/112392062

  • 去除前后空格
    string word = "  sshah hha    ";
    std::string::iterator end_pos = std::remove(word.begin(), word.end(), ' ');
    word.erase(end_pos, word.end());//移除空格
    cout << word << endl;

0 条评论

发表回复

您的电子邮箱地址不会被公开。