String 如何在C+中使用两个分隔符(;和)从字符串中获取子字符串+;

String 如何在C+中使用两个分隔符(;和)从字符串中获取子字符串+;,string,c++11,substring,String,C++11,Substring,我有这样一个用户输入: A+B*C; A*(B+c); C+F. 现在,我想解析这个输入并获取所有子字符串,直到分号出现,并在遇到句点符号时停止扫描 最简单的方法是什么 此外,我还可以自由地从文件或控制台获取输入。哪一个最容易实现 我有一种从控制台读取的方法: cout << "Enter input: " << endl; char delimiter = '.'; string inputStr; getline(cin,inputStr,delimiter); c

我有这样一个用户输入:

A+B*C;
A*(B+c);
C+F.
现在,我想解析这个输入并获取所有子字符串,直到分号出现,并在遇到句点符号时停止扫描

最简单的方法是什么

此外,我还可以自由地从文件或控制台获取输入。哪一个最容易实现

我有一种从控制台读取的方法:

cout << "Enter input: " << endl;
char delimiter = '.';
string inputStr;
getline(cin,inputStr,delimiter);
cout << inputStr;

cout与delim
一起使用
getline
适用于所有行。检查最后一行的点(.)

string line;
while(getline(cin, line, ';')){
    if(line.back() == '.') 
        line.pop_back();
    cout << line <<endl;
}
字符串行;
while(getline(cin,line,,;)){
如果(line.back()=='。)
line.pop_back();

在执行getline(cin、inputStr、delimiter)之后,就不能执行了;为什么不将inputStr传递给另一个函数parse_by_分号(inputStr)你需要什么?当然你现在必须编写算法来解析inputStr,
谢谢@solti的研究。请查看我的更新问题。我有上面提到的算法,但我在那里遇到了一个错误:
main.cpp:13:19:错误:从“char”到“const char*”的转换无效[-fppermissive]string deli=';'
你可以在这里测试我的代码:好的,错误解决了!这篇文章帮助:
string deli=';;
应该是
string deli=“;”因为它是字符串而不是字符,所以@solti!非常感谢!谢谢你的回答!但是我也可以有3个以上的输入!在这种情况下,你的示例输入应该像
a+B*C;a*(B+C)/…;C+F.
等等..你做的事情太多了。在一个字符串中读取所有行,然后在一个
循环中查找分隔符、提取子字符串、删除子字符串以及所有这些。从可读性的角度考虑所有这些。你解决问题太多了!那么你有什么建议吗?事实上,在你提到的事情之上,我我还将其推入一个向量中存储以供进一步处理。这是更新版本:!我有一个问题,我的向量没有打印出最后一个输入标记?你看到什么错误了吗?我在这里尝试了你的建议:,但它似乎没有从while循环中出来?
string line;
while(getline(cin, line, ';')){
    if(line.back() == '.') 
        line.pop_back();
    cout << line <<endl;
}