簡體   English   中英

是否有函數返回.txt中某個點的字符/字符串?

[英]Is there a function that returns the character/string at a point in a .txt?

我知道有可能獲得.txt的一部分,然后將其轉換為整數,然后將其存儲在變量中,但是有可能在單個聲明中做到這一點。 (變量必須是全局變量)。

即:

[data.txt]
1020
[convert_data.cpp]
#include<fstream>
fstream convert("data.txt");
//way to declare something equal to A PARTICULAR POINT in data.txt

int main()
{
    //how would I take this block of code and simplify it to two DECLARATIONS (not
    //function calls), or, if that's not possible or not practical, how would I make
    //n and m (or var1 and var2) global AND CONSTANT?
    char var1[5];
    convert.getline(var1,2);
    char var2[5];
    convert.getline(var2,2);
    const int n=atoi(var1);
    const int m=atoi(var2);
    return 0;
}

從編譯器的角度來看, 常量是在編譯時具有固定值的東西。 由於您正在從文本文件讀取數據(可以在編譯程序后更改數據),因此從文本文件讀取的數字不能為程序中的常數。

話雖如此,您可以執行以下操作:

class ConstInteger {
public:
    ConstInteger(fstream &f) {
        char s[5];
        f.getline(s,2);
        value = atoi(s);
    }
    public operator int() const { return value; }
private:
    int value;
};

fstream convert("data.txt");
ConstInteger n(convert);

以上依賴於C ++編譯器對全局類的初始化。 因此,關於類的初始化順序,您很大程度上受C ++編譯器的支配。 另外,在這種布置中的錯誤處理可能是麻煩的。 (例如,如果data.txt不存在怎么辦?)

不,您不能在一個聲明中做到這一點。 您可以編寫一個函數來執行此操作,然后可以使用該函數初始化局部變量,但是不能使用它初始化全局變量。 如果要初始化全局變量,則需要在程序的初始化例程中顯式地進行初始化,或者可以在全局對象的構造函數中進行初始化(不推薦)。

如果我理解正確,您想閱讀一部分文本文件並將值存儲為常量嗎? 好吧,您不能有一個未初始化的常量-因此您需要在運行時分配一個全局聲明。

可能的方法是將您具有的功能封裝在名為getConstant的全局函數中,該函數可以包含一個靜態變量,並且對getConstant的調用將檢查是否已從文件讀取var,如果該var然后返回了常量(如果未從文件中讀取)。 懶惰的評估。 當然,這並不能解決需要(?)保持不變的問題。

暫無
暫無

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

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