【发布时间】:2016-09-11 13:45:39
【问题描述】:
我有一个我正在输入的文件,其中包含一堆看起来像 (* blah blah 4324 blah*) 的行 23. 我要做的是删除括号之间的所有内容并保留紧随其后的数字右括号。
ifstream infile{"nums.txt"};
istream_iterator<string> infile_begin_iter {infile};
istream_iterator<string> eof;
vector<string> cleanNums {infile_begin_iter, eof};
for(int i=0; i<cleanNums.size(); i++){
int openParen=cleanNums[i].find("(*");
int closeParen=cleanNums[i].find("*)");
int distance=openParen-closeParen;
cleanNums[i].erase(closeParen, distance);
}
该代码不断导致我的程序崩溃,并且可能让您感到畏缩。我一直在这里寻找不同的东西,比如 getline ,但我发现它只显示了分隔符之前的所有内容。提前致谢。
【问题讨论】:
-
它是如何导致你的程序崩溃的?您收到错误消息吗?
cleanNums是如何定义的?我们需要更多信息来帮助您解决问题。 -
使用调试器解决您的崩溃问题。 :) 并发布最小、完整和可验证的示例stackoverflow.com/help/mcve
-
通常,erase() 的第二个参数不是要擦除的最后一个索引/迭代器,而是要擦除多少元素的 count .