c++关于读取一个字符串长度(包括空格回车) 自用
方法1
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string a;
getline (cin,a);
cout <<a.size()<<endl;
return 0;
}
方法2
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <cstdio>
using namespace std;
int main()
{
char str[101];
fgets(str,101,stdin);
int len = 0;
for (int i = 0; str[i] && str[i] != '\n';i++) len++; //fgets会读入回车,但这里不用读入回车
printf("%d\n",len);
return 0;
}
方法3
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char a[105];
cin.get(a,105);//需要注意cin.get()不会把换行符取出删除,影响下一次读入!
cout<<strlen(a)<<endl;
return 0;
}
方法4
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char a[105];
cin.getline(a,105);//需要注意cin.getline()会把换行符取出删除,不影响下一次读入!
cout<<strlen(a)<<endl;
return 0;
}
这里都是读入一个字符串,所以用cin.getline和cin.get没区别,如果是读入多个字符串,那么他们之间就有一点差别 cin.getline会把最后的换行符取出来并删掉,而cin.get不会把换行符取出来
#include<iostream>
using namespace std;
char a[100];
char m;
//char s[100];
int main()
{
string s;
int n;
cin>>n;//cin会把换行符留在输入队列中
//getchar();//用法与cin.get();相同,读入一个换行符!
//getline(cin,s);//getline读取换行符,并且将换行符替换成'\0',并且会丢弃换行符
cin.get();//读入一个换行符
while(n--)
{
cin.get(a,10);//cin.get(),会把换行符留在输入队列中
cin.get();//读入一个换行符
//getline(cin,s);
cout<< a <<endl;
}
return 0;
}
#include<iostream>
using namespace std;
char a[100];
char m;
//char s[100];
int main()
{
string s;
int n;
cin>>n;//cin会把换行符留在输入队列中
//getchar();//用法与cin.get();相同,读入一个换行符!
//getline(cin,s);//getline读取换行符,并且将换行符替换成'\0',并且会丢弃换行符
cin.get();//读入一个换行符
while(n--)
{
cin.getline(a,10);//cin.getline读取换行符并替换成'\0',并且不会主动
//丢弃换行符,会把它留在输入队列中
cout<< a <<endl;
}
return 0;
}
这两个运行的结果是相同的,但是无论是用cin输入还是cin.get输入,在读多个字符串,都需要用cin.get吸收换行符号
引用
作者:Accepting
链接:https://www.acwing.com/solution/content/10357/
来源:AcWing