[英]Sort lines ending in dot (.)
我的代码有点问题。 我的代码应该剥离除。,:和;以外的所有非字母数字字符。 然后对以新行上的点结尾的行进行排序。 因此,类似:
First, some characters, legal and illegal: )(=8skf-=&. This should be on a separate line. This too.
会成为:
First, some characters, legal and illegal: 8skf.
This should be on a separate line.
This too.
现在,去除非字母数字的代码的第一部分可以正常工作。 排序部分工作到一定程度。 因此,在我的代码中,上面的行实际上变为:
First, some characters, legal and illegal: 8skf.
This should be on a separate line. This too.
我知道这是因为这是新行,并且我的代码在变成新行的过程中无法读取它。 代码是:
int writeFinalv(string path) {
readTempFiles(path.c_str());
string line;
string nline;
int start;
int lnth;
ifstream temp("temp.txt");
ofstream final;
int length;
final.open(path.c_str(), ios::out | ios::trunc);
if(temp.is_open()) {
while(getline(temp, line)) {
length = line.length();
for(int i = 0; i < length; i++) {
if(line[i] == '.') {
if(line[i+1] == ' ') {
nline = line.substr(0, (i+2));
}
else {
nline = line.substr(0, (i+1));
}
final << nline << "\n";
start = line.find(nline);
lnth = nline.length();
line.erase(start, lnth);
}
}
}
}
else {
error = true;
}
return 0;
}
我的代码首先通过调用该函数来工作,该函数读取初始文件,将其删除非法字符,然后写入临时文件。 然后,它会在截断临时文件后读取该临时文件,查找点,并将新行写入初始文件中。 提前致谢。
通过擦除for循环内的部分line
字符串,循环索引将无效。 i
和length
不再包含可以可靠地用于继续for循环的值。
您实际上实际上不需要从字符串中删除。 您可以跟踪当前的起始位置,并将其用作substr
调用的第一个参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.