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转char数组
char ch[20]; string s="123456"; strcpy(ch,s.c_str());
-
string转char*
https://blog.csdn.net/weixin_46474546/article/details/119542321
https://zhuanlan.zhihu.com/p/348899581
通过data()或者c_str()方法 -
char[]转string
直接转即可string charArrToStr(char charArr[]){ string ans = charArr; return ans; }
或者通过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如果与字符比较,字符只能是双引号,不能使用单引号。 -
空字符串判断
- 使用string类的成员函数empty(),判断是否为空:
string str; if(str.empty()){ // 为空成立 ... }
- 使用size(),判断字符串长度,如果为0,则为空:
string str; if(str.size() == 0){ // 为空成立 ... }
- 与空串""比较,相等,则为空:
string str; if(str == ""){ // 为空成立 ... }
- 使用string类的成员函数empty(),判断是否为空:
字符串拼接
-
invalid operands of types ‘const char [6]‘ and ‘const char [6]‘ to binary ‘operator+‘
https://blog.csdn.net/xb_2015/article/details/126791930 -
sprintf
sprintf (res, "%s%d", name, a)
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++
‘string’ has not been declared
明明已经#include <string>
,仍然报错,是因为没有加std的原因。
https://www.coder.work/article/120269
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 条评论