我正在用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);
.
.
.
答案 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;
}
}
编辑: 这假设您没有重复键,否则将覆盖这些值。任何容器都可以替换地图以容纳对