我有一个给定的要求,其中字符串的有效输入格式为 - :
- USD/AGR
- USDAGR
- +USD+AGR
- -USD+AGR
- -USD-AGR
- +USD-AGR
- +USD+AGR
- +USD/AGR
- -USDAGR
- -USD/AGR
- USD-AGR
and so on...
输入采用字符串流数据类型: 其中'+'表示包含此字符串以进行进一步计算,该字符串不是此程序的一部分,' - '不包括此字符串。
我必须从给定字符串中选择USD,AGR即子字符串,该字符串作为流输入给出。我尝试了下面的代码,但在某些情况下它失败了。请建议更正(注意美元和AGR可以替换为任何3个字符,如INR / JPY)。
//示例程序
#include <iostream>
#include <string>
#include <sstream>
#include <stdio.h>
#include <algorithm>
using namespace std;
#define CCY_LEN 3
int main()
{
stringstream ss;
string ss1 = "USD/SAR" , ss2;
ss1.erase(std::remove(ss1.begin(), ss1.end(), '/'), ss1.end());
cout<<ss1<<endl;
ss.str(ss1);
while(!ss.eof())
{
ss2.clear();
ss.width(CCY_LEN+1);
ss >> ss2;
if(!ss2.size())
break;
if(ss2.at(0) == '-'){
cout <<" 1 " <<ss2.substr(1, CCY_LEN)<<endl ;
}
if(ss2.at(0) == '+'){
ss2.erase(std::remove(ss2.begin(), ss2.end(), '+'), ss1.end());
cout << " 2 " << ss2.substr(0, CCY_LEN) <<endl;
}
else{
cout << " 3 " <<ss2.substr(0, CCY_LEN )<<endl ;
}
}
return 0;
}