C/C++ 字符串操作
参考:https://www.cnblogs.com/LyShark/p/12869454.html
1. C字符串操作
strtok 实现字符串切割: 将字符串根据分隔符进行切割分片.返回分隔符之前的字符串,
strlen 获取字符串长度,包含末尾的'\0'
strcpy 字符串拷贝
strcat 字符串连接: 将由src指向的空终止字节串的副本追加到由dest指向的以空字节终止的字节串的末尾
strcmp 字符串对比
strchr 字符串截取,返回分割字符之后的字符串,包括分隔符
1.1. strtok
建议使用strtok_s strtok和strtok_s都会改变原始字符串,但strtok会把分隔符之后的字符串保存到第三个参数中。
strtok原型:
_ACRTIMP char* __cdecl strtok( _Inout_opt_z_ char* _String, _In_z_ char const* _Delimiter );
strtok_s原型:
_ACRTIMP char* __cdecl strtok_s( _Inout_opt_z_ char* _String, _In_z_ char const* _Delimiter, _Inout_ _Deref_prepost_opt_z_ char** _Context );
第一个参数是要切割的字符串,会被改变为分隔符之前的字符串,不包括分隔符;
第二个参数是分隔符;
strtok_s第三个参数是分隔符之后的字符串,不包括分隔符
char srcstr[] = { "hello,welcom,to,my world" }; char* ptr1; strtok_s(srcstr, ",", &ptr1);////strtok = hello,ptr = welcom,to,my world //strtok(srcstr, ",");//strtok = hello
1.2. strcmp
还有strncmp(),表示比较前几个字符
strcmp原型:
int __cdecl strcmp( _In_z_ char const* _Str1, _In_z_ char const* _Str2 );
两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止,
若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。
2. C++字符串操作
cout格式化输出:
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <iomanip> using namespace std; int main(int argc, char* argv[]) { cout << hex << 100 << endl; // 十六进制输出 cout << dec << 100 << endl; // 十进制输出 cout << oct << 100 << endl; // 八进制输出 cout << fixed << 10.053 << endl; // 单浮点数输出 cout << scientific << 10.053 << endl; // 科学计数法 cout << setw(10) << "hello" << setw(10) << "lyshark" << endl; // 默认两个单词之间空格 cout << setfill('-') << setw(10) << "hello" << endl; // 指定域宽,输出字符串,空白处以'-'填充 //之前的格式会应用到后面,如果需要新的格式输出需要指定 for (int x = 0; x < 3; x++) { cout << setfill(' ') << setw(10) << left << "hello" ; // 自动(left/right)对齐,不足补空格 } cout << endl; system("pause"); return 0; }