输入字符串,输出按照宏定义格式输出
例如:
输入:
2
wide.1.2.
..length..0;/
输出:
WIDE_1_2
LENGTH_0
代码实现(编译器:cygwin64):
#include<iostream>
#include<vector>
#include<string>
using namespace std;
class Test{
public:
Test(){
int num;
cin>>num;
cin.ignore();
for(int i=0;i<num;i++){
string s;
getline(cin,s);
vec.push_back(s);
}
}
void LTrans(){
for(int i=0;i<vec.size();i++){
vec[i]=Transform(vec[i]);
cout<<vec[i]<<endl;
}
}
string Transform(string s){
string res;
res.push_back('_');
int flag=1;
for(int i=0;i<s.size();i++){
if(s[i]<='z'&&s[i]>='a'){
s[i]+='A'-'a';
res.push_back(s[i]);
flag=0;
}else if(s[i]<='9'&&s[i]>='0'){
if(res[res.size()-1]!='_'){
res.push_back('_');
}
res.push_back(s[i]);
flag=0;
if(s[i+1]!='_'){
res.push_back('_');
flag=1;
}
}else if( s[i]<='Z'&&s[i]>='A'){
res.push_back(s[i]);
flag=0;
}else {
if(flag==0){
res.push_back('_');
}
flag=1;
}
}
if(res.at(res.size()-1)!='_'){
res.push_back('_');
}
return res;
}
private:
vector<string> vec;
};
int main()
{
Test tt;
tt.LTrans();
}
运行结果: