我正在开发一个项目,该项目包括从一个名为input.txt的文件中读取输入,该文件具有无限数量的行。每行都有一个罗马数字,一个空格,一个加号或减号,另一个空格,然后是另一个罗马数字。我应该将两个数字加在一起,并将答案写入另一个名为output.txt的文件中。但是,我无法想到一种访问运营商的方法。 这是一个示例输入文件:
XV + VII
XII + VIII
有人可以告诉我如何访问代码的每一行的加号吗?
答案 0 :(得分:4)
如果您正在从标准输入读取文件,则只需使用提取运算符即可获得以空格分隔的标记。
#include <string>
#include <iostream>
int main(int argc, char *argv[]) {
std::string token;
while (std::cin >> token) {
// parse tokens here ...
// As an example, I'll just print out the stream of tokens.
std::cout << token << std::endl;
}
}
如果你想假设每行有3个令牌,你甚至可以这样做:
#include <string>
#include <iostream>
int main(int argc, char *argv[]) {
std::string first, middle, last;
while (std::cin >> first >> middle >> last) {
// This should print out just your operator
std::cout << middle << std::endl;
}
}
答案 1 :(得分:1)
1)使用string :: find查找分割的位置( +
或-
)
2)使用string :: substr根据找到拆分字符的位置将字符串拆分为两部分。
1)从输入中读取3个令牌。第一项是左操作数,第二项是运算符,第三项是右操作数。
2)将操作数转换为整数。
3)根据操作符添加或减去第二个值。
4)使用特殊的罗马数字格式化器格式化结果。
5)将结果写入输出文件。