我只需要一点文件解析方面的帮助。我们必须解析一个文件,该文件每行有 6 个字符串条目,格式如下:
“字符串 1”、“字符串 2”、“字符串 3”、“字符串 4”、“字符串 5”、“字符串 6”
我的导师最近给了我们一小段代码作为“提示”,我应该使用它。不幸的是,我不知道如何让它工作。这是我的文件解析函数。
void parseData(ifstream &myFile, Book bookPtr[])
{
string bookInfo;
int start, end;
string bookData[6];
getline(myFile, bookInfo);
start = -2;
myFile.open("Book List.txt");
for (int j = 0; j < 6; j++)
{
start += 3;
end = bookInfo.find('"', start);
bookData[j] = bookInfo.substr(start, end-start);
start = end;
}
}
所以我试图将 6 个字符串读入一个字符串数组。有人可以帮助我完成整个过程吗?
最佳答案
start = -2;
for (int j = 0; j < 6; j++)
{
start += 3;
end = bookInfo.find('"', start);
bookData[j] = bookInfo.substr(start, end-start);
start = end;
}
所以 ", "
是四个字符。前导结束引号在开始结束引号之后 3 个字符。
在循环的入口处,start
指向最后一个结束引号。 (在第一次进入循环时,它被伪造为 -2
以指向虚构的“-1th”元素的结束引号。)
所以我们从最后一个收盘价前进到下面的开盘价:
start += 3;
然后我们使用 std::string::find 找到结束引号:
end = bookInfo.find('"', start);
偏移量告诉它忽略直到并包括该位置的所有字符。
然后我们有两个引号位置,start..end
,所以我们使用 substr
来提取字符串:
bookData[j] = bookInfo.substr(start, end-start);
然后我们将下一个循环的开始更新为最后一个收盘价:
start = end
关于c++ - C : Using substr to parse a text file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16254402/