Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从输入字符串中拾取子字符串_C++_String_Stringstream - Fatal编程技术网

C++ 从输入字符串中拾取子字符串

C++ 从输入字符串中拾取子字符串,c++,string,stringstream,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... 输入为stringstream数据类型: 其中,“+”表示包含该字符串用于进一步计算,该字符串不属于本程序的一部分,“-”表示不包含该字符串 我必须从作为流输入的给定字符串中选择USD

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

- USD/AGR
- USDAGR
- +USD+AGR
- -USD+AGR
- -USD-AGR
- +USD-AGR
- +USD+AGR
- +USD/AGR
- -USDAGR
- -USD/AGR 
- USD-AGR

and so on...
输入为stringstream数据类型: 其中,“+”表示包含该字符串用于进一步计算,该字符串不属于本程序的一部分,“-”表示不包含该字符串

我必须从作为流输入的给定字符串中选择USD,AGR,即子字符串。我尝试了下面的代码,但在某些情况下失败了。请建议更正(注:美元和AGR可替换为任何3个字符,如印度卢比/日元)

//示例程序

#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;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
#定义CCY_LEN 3
int main()
{
细流ss;
字符串ss1=“USD/SAR”,ss2;
擦除(std::remove(ss1.begin()、ss1.end()、“/”、ss1.end());

我已经删除了
array
标记,因为我没有看到任何,问题也没有提到,我添加了
c++
标记,因为语言标记对于代码的语法着色和熟悉该语言的人能够更容易地找到你的问题都很重要。谢谢crashmstr+,-和/都是特殊字符,我是g举个例子,假设我有多种货币的交易,用户只想列出美元和印度卢比,这样他就可以输入-USDINR或USD/INR或+USD/+INR或+USD/+INR都是有效的输入。+只是包括这种货币,-意味着不列出那些以负号为前导字符和/或作为无意义的输入,因为它只是提供了一种输入方式使用SLAh介于或不介于两者之间。我们可以只输入-INR这样它将列出除INR@RyanVincent谢谢