只是换成了markdown,防止质疑原创,帖个之前这篇文章的后台数据
提醒一句:
平台不同,编译器不同。
CB编译的c++采用的头文件是,而VC++ 引用的头文件是,以下程序采用CB编写。
但是现在C++11统一头文件之后貌似这个问题不大。
scanf 遇空格终止
#include <bits/stdc++.h>
#define N 101010
using namespace std;
int main(){
char s[N],b[N];
cout<<"请输入字符串:\n";
while(~scanf("%s",s)){
int i = 0;
while((b[i] = s[i])!='\0') i++;
cout<<"字符串复制如下:\n";
puts(b);
cout<<"请输入字符串:\n";
}
return 0;
}
样例:输入中有空格,自动划分成了两个字符串
getline
#include <bits/stdc++.h>
#define N 101010
using namespace std;
int main()
{
//char s[N],b[N];
string s,b;
cout<<"请输入字符串:\n";
while(getline(cin,s)){
b = s;
cout<<"字符串复制如下:\n";
// puts(b);
cout<<b<<endl;
cout<<"请输入字符串:\n";
}
return 0;
}
样例:可以读入空格,以’\n’结束
用逗号间隔,输入字符串
#include <bits/stdc++.h>
#define N 101010
using namespace std;
int main()
{
string s;
cout<<"请输入字符串:\n";
cin>>s;
stringstream input(s);
int k = 0, a[N];
while(getline(input, s, ',')){ // 逗号间隔输出
a[k] = stoi(s);
k += 1;
}
cout<<"转化为整数输出:\n";
for(int i = 0;i < k;i++)
cout<<a[i]<<endl;
return 0;
}
gets 包括空格,遇’\n’终止
#include <bits/stdc++.h>
#define N 101010
using namespace std;
int main()
{
char s[N],b[N];
cout<<"请输入字符串:\n";
while(gets(s)) {
int i = 0;
while((b[i] = s[i])!='\0') i++;
cout<<"字符串复制如下:\n";
puts(b);
cout<<"请输入字符串:\n";
}
return 0;
}
样例: 可读入空格
getchar() 终止条件自己定,在终止之前可读入所有的操作
#include <bits/stdc++.h>
#define N 101010
using namespace std;
int main()
{
char s[N],b[N];
int i = 0;
cout<<"请输入字符串:\n";
while((s[i] = getchar())!='\n')///模仿getline
{
b[i] = s[i];
i++;
}
cout<<"字符串复制如下:\n";
puts(b);
return 0;
}
样例:按回车之前,可以保存所有的输入
sscanf 暂时参考 https://www.cnblogs.com/lanjianhappy/p/6861728.html
cin 类似于scanf
但是有这么一种用法,输入可变长数组,以回车结束输入。
#include <bits/stdc++.h>
#define N 101010
using namespace std;
int main(){
int n;
int p[N];
int i = 0;
cout<<"开始输入字符:\n";
while(1){
cin>>n;
p[i] = n;
i += 1;
char s = cin.get(); // 用s来接收是不是按了回车
if(s == '\n'){
break;
}
}
cout<<"输出结果为:\n";
for(int j = 0 ;j < i;j++)
cout<<p[j]<<" ";
cout<<endl;
return 0;
}
样例:输出未知长度数组,以回车结束输入。