是否可以让用户在流缓冲区中输入一行字符,然后将它们存储在不同的变量(不同类型)中?
例如,用户编写以下分数之和:
1/5 + 2/7
我有5个变量:
int numerator1, denominator1, numerator2, denominator2; char operat;
在完成一段我不知道的花哨的代码后,最后,变量将存储以下内容
numerator1 = 1
denominator1 = 5
operat = +
numerator2 = 2
denominator2 = 7
有什么建议么?
最佳答案
您绝对应该使用AST,因为它们会帮助您解析错误。但是,如果您正在寻找简单的解析功能,则可以考虑使用sscanf。 PS:由于声誉问题,将其发布为答案。
#include<cstring>
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
char s[1024];
scanf("%s", s);
int n1, n2, dn1, dn2;
char op1, op2, op3;
sscanf(s, "%d%c%d%c%d%c%d", &n1, &op1, &dn1, &op2, &n2, &op3, &dn2);
cout<<"\n"<<n1<<" "<<op1<<" "<<dn1<<" "<<op2<<" "<<n2<<" "<<op3<<" "<<dn2<<endl;
}
关于c++ - 流缓冲区(cin,getline等),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26793640/