huo1. memset函数
注意的是,memset(数组名,值,sizeof(数组名));按照字节赋值
2. C++读入带空格的字符串
如果读入的是字符数组:
char s[100];
//第二个参数为最多读入多少字符
//第三个为从哪一个文件读入,一般为系统变量stdin
fgets(s, 100, stdin);
cout << s;
//get或getline都可以
char a[50];
cin.get(a, 50);
cout << a;
如果读入的是string
string str;
getline(cin, str);
cout << str;
也可以这样:
#include <cstdio>
#include <cstring>
const int MAXN = 51;
char str[MAXN];
int main() {
scanf("%[^\n]s", str);
printf("%s", str);
return 0;
}
3. 如果不是使用scanf函数的%s格式或者gets函数输入字符串(例如使用getchar),请一定要在输入的每一个字符串之后加上'\0'。否则会有乱码。
4.字符串的gets 输入和puts输出
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int str1[20];
char a[100][100];
int t;
cin>>t;
getchar();
for(int i=0;i<t;i++)
{
fgets(a[i], 55, stdin);
}
for(int i=0;i<t;i++)
{
cout<<a[i];
}
}
其中你需要知道gets最好换成fgets(a[i],长度,stdin)其中stdin代表的是键盘输入。
5. string类的字典序比较
s1.compare(s2)
在 C++ 中,我们可以使用 compare()
函数比较 char*
类型和 string
类型字符串的字典序。compare()
函数和 strcmp()
函数的返回值相同。
#include <iostream>
#include <string>
using namespace std;
int main() {
string s1 = "a";
string s2 = "b";
cout << s1.compare(s2) << endl; //-1
cout << s2.compare(s1) << endl; //1
cout << s1.compare(s1) << endl; //0
return 0;
}
6. string.h头文件下的一些个函数(简单但是不太经常用)
strcmp();比较
strlen();长度,指的是\0之前的字符的个数
strcpy();把一个字符串复制给另一个字符串
strcat();可以把一个字符串接到另一个字符串的后面
sscanf(str,"%d",&n); 把字符数组str中的内容以“%d”的格式写到n中(还是从左到右)
sprintf(str,"%d",n);就是把n(int型)以“%d”的格式写到str字符数组里面(从右往左)