如何在c ++中访问行中间的字符?

时间:2014-12-01 22:23:36

标签: c++

我正在开发一个项目,该项目包括从一个名为input.txt的文件中读取输入,该文件具有无限数量的行。每行都有一个罗马数字,一个空格,一个加号或减号,另一个空格,然后是另一个罗马数字。我应该将两个数字加在一起,并将答案写入另一个名为output.txt的文件中。但是,我无法想到一种访问运营商的方法。 这是一个示例输入文件:

XV + VII 
XII + VIII

有人可以告诉我如何访问代码的每一行的加号吗?

2 个答案:

答案 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)将结果写入输出文件。