c++ - C : Using substr to parse a text file

标签 c++ file parsing substr

我只需要一点文件解析方面的帮助。我们必须解析一个文件,该文件每行有 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/

相关文章:

c++ - 如何使用 QT 扩展资源管理器上下文菜单?

c++ - 访问基类的 protected 构造函数

如果字符串是唯一的,则 Php 追加到文件

file - 如何使用批处理文件写入文本文件?

java - 寻找一种解析多类型 JSON 字段的方法

c++ - 将 24 位有符号整数信号转换为 16 位有符号整数信号

c++ - 从 Window Rect 计算客户端大小和位置

java - 使用java套接字从客户端向服务器发送文本文件

iphone - TFHppleElement(Hpple),在iphone上解析HTML

Java 数组属性越界异常