-
字符串
按一定宽度输出字符串
用空格填充多余位置
#include <bits/stdc++.h>
using namespace std;
int main() {
long long num = 1;
int len = 8;
cout<<std::right<<setw(len)<<num;
cout<<std::left<<setw(len)<<num;
return 0;
}
用给定字符填充多余位置
#include <bits/stdc++.h>
using namespace std;
int main() {
long long num = 1;
int len = 8;
cout<<std::right<<setfill('*')<<setw(len)<<num<<endl;
cout<<std::left<<setfill('*')<<setw(len)<<num<<endl;
return 0;
}
按行输入并输出
#include <bits/stdc++.h>
using namespace std;
int main() {
string line;
getline(cin, line);
cout<<line;
return 0;
}
分词
1、按空字符切分:
#include <bits/stdc++.h>
using namespace std;
int main() {
string line, x;
stringstream ss;
getline(cin, line);
ss<<line;
while(ss>>x){
cout<<x<<" ";
}
return 0;
}
2、按照拉丁字母分块:
int main(){
string line;
getline(cin, line);
string x; x.clear();
for(int i = 0; i < line.size(); i++) {
if(isalpha(line[i])) {
x += line[i];
}
else {
cout<<x;
}
}
return 0;
}
3、按照字母数字分块
#include<bits/stdc++.h>
using namespace std;
int minn = 0x3f3f3f3f, maxn = 0;
string minn_s, maxn_s;
void upd(string x){
if(x.size() < minn) {
minn = x.size();
minn_s = x;
}
if(x.size() > maxn) {
maxn = x.size();
maxn_s = x;
}
}
int main(){
string line;
getline(cin, line);
string x; x.clear();
for(int i = 0; i < line.size(); i++) {
if(isalnum(line[i])) {
x += line[i];
}
else {
cout<<x<<endl;
x.clear();
}
}
return 0;
}
字符串前缀匹配
#include <bits/stdc++.h>
using namespace std;
int main() {
const int N = 3;
string s[N] = {"un","in", "ab"};
string line;
cin>>line;
for(int i = 0; i < N; i++) {
if(line.substr(0, s[i].size()) == s[i]) {
cout<<s[i]<<endl;
}
}
return 0;
}
字符串尾缀匹配
#include <bits/stdc++.h>
using namespace std;
int main() {
const int N = 3;
string s[N] = {"ing","er", "ly"};
string line;
cin>>line;
for(int i = 0; i < N; i++) {
if(line.substr(line.size()-s[i].size()) == s[i]) {
cout<<s[i]<<endl;
}
}
return 0;
}
子字符串位置搜索
#include <bits/stdc++.h>
using namespace std;
int main() {
string line;
getline(cin, line);
string target = "Apple";
string::size_type idx = line.find(target); //searching from left side
string::size_type ridx = line.rfind(target); //searching from right side
if(idx == string::npos) cout<<"Not Found!"; // if(ridx == string::npos) cout<<"Not Found!";
return 0;
}
子字符串大小写转换
transform方式
子串转换之后的结果保存在一个新字符串y中,只有区间片段!
如果将第三个参数y.begin(),换成x.begin() 则以部分区间修改的方式得到结果。
#include <bits/stdc++.h>
using namespace std;
int main() {
string x, y;
cin>>x;
int start, len;
start = 0; // x[start]
len = 3; // ~x[start+len-1]
y.resize(len);
transform(x.begin()+start, x.begin()+start+len, y.begin(),::toupper);// ::tolower
cout<<y<<endl;
return 0;
}
toupper/ tolower 方式
结果以原字符串上部分区间修改的方式得到结果。
#include <bits/stdc++.h>
using namespace std;
int main() {
string x, y;
cin>>x;
int start, len;
start = 0;
len = 3;
for(int i = start; i < start + len; i++) {
x[i] = toupper(x[i]);
}
cout<<x<<endl;
return 0;
}
字符串与数值的转换
#include <bits/stdc++.h>
using namespace std;
int main() {
string line = "3.14";
// getline(cin, line);
stringstream ss;
ss << line;
float pi;
ss>>pi;
cout<<pi<<endl;
return 0;
}
-
实数
满足精度的浮点类型输出
#include <bits/stdc++.h>
using namespace std;
int main() {
float pi = 3.14159;
cout<<fixed<<setprecision(2)<<pi<<endl;
//cout.unsetf(ios::fixed);
return 0;
}
带符号的数值输出
#include <bits/stdc++.h>
using namespace std;
int main() {
float pi = 3.14666;
cout<<showpos<<pi<<endl;
cout<<noshowpos;
return 0;
}
数学表达式输出
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5;
int a[MAXN] = {1,1,3,4,5}; //coefficient array
//P_n = a_0 + a_1x + a_2x^2 + \cdots + a_nx^n
int main() {
stringstream ss;
if(a[0]!=0) ss<<a[0]; //a0*x^0
if(a[1]!=0) ss<<a[1]<<"x";
for(int i = 2; i < MAXN; i++)
if(a[i]!=0) ss<<showpos<<a[i]<<"x^"<<noshowpos<<i;
cout<<ss.str();
return 0;
}
版权声明:本文为Eric2i原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。