我在檔案中有以下內容:
A(3#John Brook)
A(2#Allies Frank)
A(1#Lucas Feider)
我想逐行閱讀。首先我想按順序閱讀。例如,A 比 3 比約翰布魯克。一切都很好,直到 3 但我怎么能在沒有“#”和“)”的情況下閱讀 John Brook 作為字串。
我有一個功能,你可以看看我的代碼:
void readFile()
{
ifstream read;
char process;
char index;
string data;
read.open("datas.txt");
while(true)
{
read.get(process);
read.get(index);
// Here, I need to read "John Brook" for first line.
// "Allies Frank" for second line.
// "Lucas Feider" for third line.
}
read.close();
}
uj5u.com熱心網友回復:
首先將您的資料組織成某種結構。
struct Data {
char process;
char index;
std::string data;
};
然后實作能夠讀取單個專案的功能。將分隔符讀入臨時變數,然后檢查它們是否包含正確的值。這是一個假設每個專案都在單行中的示例。
std::istream& operator>>(std::istream& in, Data& d) {
std::string l;
if (std::getline(in, l)) {
std::istringstream in_line{l};
char openParan;
char separator;
if (!std::getline(
in_line >> d.process >> openParan >> d.index >> separator,
d.data, ')') ||
openParan != '(' || separator != '#') {
in.setstate(std::ios::failbit);
}
}
return in;
}
之后休息是快速而簡單的。 https://godbolt.org/z/aGYvPeWfW
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/339977.html
標籤:C
上一篇:減少模板引數的數量
下一篇:C 結構體的初始化
