簡體   English   中英

C ++讀取文本文件的特定部分

[英]C++ reading specific parts of a text file

晚上好!

我正在這個C ++類中完成編程的第一學期(完全是編程新手),並且有一個最終項目。 我們需要做的是創建一個模擬社交媒體網絡(類似於Facebook),您可以在其中注冊,發布帖子,關注其他用戶以及其他此類基本功能。

該項目的基本思想是將新信息寫入並將其附加到文本文件中,並將其用作數據庫。

我現在遇到的問題之一是,我發現只有在所有行的長度都相同的情況下,才能讀取文件的特定行。 例如,當我要查看用戶的公共信息(例如其姓名和職業)時,就會出現問題,因為我必須從特定的行中讀取內容,但是這些行可能包含不同長度的信息。 例如,如果不同的用戶遵循不同的人數,那么這樣做的目的是使並非每一行都有相同數量的單詞。

到目前為止,這是我的項目的非常精簡的框架代碼,以節省一些空間:

project.cpp(實現)

#include <iostream>
#include <string>
#include "project02.h"

using namespace std;

void Login()
{
    //login screen, if user chooses to sign up then it calls setUserInfo()
}

//includes setter and getter functions but I won't need to list them here

project.h(標頭)

#ifndef PROJECT02_H
#define PROJECT02_H

using namespace std;

void Login();

class UserInfo
{
    //class for setting and getting user information
};

projectmain.cpp(主要)

#include <iostream>
#include <string>
#include "project02.h"

using namespace std;

int main()
{
    Login();
    return 0;
}

這就是要旨。 當新用戶注冊時,所有輸入的用戶信息都將附加到文件中以供以后使用。 現在最主要的擔心是,當我以后必須閱讀特定用戶的信息時,如果最終的長度不同,我將無法閱讀特定行,因此我想知道是否有人對我如何提供建議考慮這些功能的情況下進行此項目。

任何見識將不勝感激=)

編輯:我正在用ifstream讀取文件。 反正那是我唯一知道的方法。

您幾乎已經發現了問題。 由於您的問題沒有確定的答案,因此請以我的提示為起點:

  • 假設文件中的行是分開的,例如通過換行\\n ,那么您當然可以讀取文件的特定行。 但是您必須從頭開始遍歷整個文件,通過計算跳過的所有行來找到該行。
  • 如果所有行都具有相同的公共長度,則可以計算文件中特定行開始的位置,然后讀取它(參見seek() )。 然后,您可能需要一種標記行長度的方法 ,因為您將把較短的行擴展到公共長度。
  • 作為一種折衷,如果您因將許多短行擴展到相當長的公共長度而浪費了昂貴的空間,則可以引入另一個索引文件。 在該文件中,您僅存儲例如指向實際數據文件的起始位置(數字)。 索引 (起始位置)可以全部相同(與數據本身相比較短),因此您可以輕松地在索引中找到特定的索引 然后使用它來查找實際數據。
  • 您可以為文件使用某種結構。 有很多,例如XML或JSON。 但是,其中大多數文件也瀏覽文件以查找信息位。
  • 有許多內聯數據庫庫,例如SQLite或Berkeley DB。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM