从输入字符串中选择子字符串

时间:2017-03-09 14:59:53

标签: c++ string stringstream

我有一个给定的要求,其中字符串的有效输入格式为 - :

- 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;
}

0 个答案:

没有答案