我一直在试图弄清楚如何在数组和向量中存储txt文件中的字符串和双精度,但我无法理解它。我做了很多研究,并没有找到向我解释的东西。基本上我的任务是从包含用户名密码的文件和这种格式的钱或点数字中读取。 Enis tah \ n MyPassw0rd1 $$ 4 \ n 436.18 \ n
Enis1 tAh \ n mYpassWord \ n 76.2 \ n
\不在txt文件中,但名称传递和数字在不同的行中而不是文本的同一行
...
对于我知道大小的文件我可以使用数组我不知道大小我可以使用向量。然后要求用户输入用户名和密码,如果匹配则允许用户登录并允许他访问银行帐户或查看积分。
这是我的代码:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
void mainMenu();
using namespace std;
int main(){
ifstream storeFromFile("student_info.txt");
vector<string> Usernames;
string getUsernames;
while (!storeFromFile.eof()) {
cin.ignore();
getline(storeFromFile, getUsernames);
}
for (int i=0; i<=Usernames.size(); i++) {
Usernames.push_back(getUsernames);
cout << Usernames[0];
}
mainMenu();
return 0;
}
void mainMenu(){
cout <<"\n[DA] to view all grades" <<endl;
cout <<"[T] to view top x students" <<endl;
cout <<"[P] to view one grade in particular" <<endl;
cout <<"[E] to exit\n" <<endl;
}
答案 0 :(得分:0)
您真的想使用class
或struct
为每条记录建模。
为记录中的每个“列”或字段(文本行)定义一个具有一个成员的类。
重载提取运算符operator >>
,让您的类从流中输入每个成员。
声明这些类的容器作为您的数据库,例如std::vector<Record> database;
。
将输入循环更改为:
Record r;
while (data_file >> r)
{
database.push_back(r);
}
这是在CSV文件中阅读的本质(即使您的文件使用其他分隔符而不是逗号)。
答案 1 :(得分:0)
您可以使用struct并定义文档的结构。然后逐行阅读。这个链接可以帮助。 https://www.devarticles.com/c/a/Cplusplus/Serialize-Your-Class-into-Streams-in-C/
答案 2 :(得分:0)
我得到了答案
const int sizeLimit = 50;
string firstName[sizeLimit], lastName[sizeLimit], passWord[sizeLimit];
double accountBalance[sizeLimit];
int count = 0;
ifstream readFile("Accounts.txt");
while (!readFile.eof())
{
readFile >> firstName[count];
readFile >> lastName[count];
readFile >> passWord[count];
readFile >> accountBalance[count];
count++;
}