如何在以前读取的行中找到一些单词并在c ++中的输出读/写字符串中删除它

时间:2014-02-04 05:23:51

标签: c++ string file

我正在用c ++读取一个文本文件,并将一堆配对的数字写入另一个文件。

输入文件的结构是一堆配对数字和一些像“remove120 43 blah bla”这样的行,表示删除以前的配对数字之一,在这种情况下为120 43(肯定存在于前一行之一)

因此,每次在一行中有一个单词“remove”时,我想在前面的行中找到它的配对数字并从我的输出中删除它。

P.S。我以前提供过这个输入文件,但是我不善于处理字符串,这让我感到困惑。

我是这样开始的:

string s;
ifstream myfile("input.txt");
ofstream output ("output.txt");

if(myfile.is_open()){
    while (!myfile.eof()){
        getline (myfile, s);
.
.
.

1 个答案:

答案 0 :(得分:2)

有些代码可以帮助您查看当前的位置,但根据您的描述我会设置如下内容:

istream file;
string line;
map pairs;
sstream line_parser;
int one, two

while (file >> line) {
    line_parser.str(line);
    if (line[0] == 'r') {
       line_parser >> line; // take 'remove' out of the stream
       line_parser >> one;
       pairs.erase(pairs.find(one));
    } else {
       line_parser >> one;
       line_parser >> two;
       pairs[one] = two;
    }
}

编辑:    这假设您没有重复键,否则将覆盖这些值。任何容器都可以替换地图以容纳对