在线编程

C++

输入

在线编程输入输出很关键,特别是输入,输入读数据的方式不对,连测试样例都读不进来,功能实现了,也还是通不过,这里列举一些碰到的例子,慢慢总结。

  • cin

cin >> a >> b;, >> 是会过滤掉不可见字符(如 空格 回车,TAB 等); 不想略过空白字符,那就使用 noskipws 流控制 cin>>noskipws>>input[j];

  • cin.get()

可以用来接收字符, 或字符串(可以接受空格)

1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
main ()
{
char ch;
//或者cin.get(ch);
ch=cin.get();
cout<<ch<<endl;
}

输入:jljkljkl
输出:j
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
main ()
{
char a[20];
cin.get(a,20);
cout<<a<<endl;
}

输入:jkl jkl jkl
输出:jkl jkl jkl
  • cin.getline()

getline (char* s, streamsize n, char delim );

接受一个字符串,可以接收空格并输出

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
main ()
{
char m[20];
cin.getline(m,5);
cout<<m<<endl;
}

输入:jkljkljkl
输出:jklj
  • getline

getline (istream& is, string& str, char delim);

需包含“#include <string>”, 接受一个字符串,可以接收空格并输出

1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream>
#include<string>
using namespace std;
main ()
{
string str;
getline(cin,str);
cout<<str<<endl;
}

输入:jkljkljkl
输出:jkljkljkl

每行一个数据

每行一个数据可以用cin读取,cin读取的是一行的内容,而且还可以指定数据格式

1
2
3
4
5
6
7
input:
1
2
3

int a, b, c;
cin >> q >> b >> c;

输入数据用 , 分隔

这种情况下并不能用cin读数据。

方式一: 使用getline

1
2
3
4
5
6
input:
123,234

string a, b;
getline(cin, a, ',');
getline(cin, b);

字符串操作

逆序

  • reverse()
1
2
3
4
5
6
7
8
9
10
#include <algorithm>
#include <string>

string a;
cin >> a;
reverse(a.begin(), a.end());
cout << a << endl;

输入:123
输出:321

类型转换

  • 数字转字符串
1
2
3
4
5
#include <string>

int a;
string sa;
sa = to_string(a);
  • 字符串转数字
1
2
3
4
5
#include <string>

int a;
string sa;
a = stoi(sa);