C++ 读取文本文件并打印内容c++;
我被告知尽可能少地读/写光盘。对于这个解决方案,我创建了一个构造函数,它在对象构造时读取文件,并用文件的内容填充无序的映射。这是读取.txt文件的好方法/实践吗 在打印文件内容方面,我再次提到了readFile。这样可以吗?如果不让它全球化,我真的找不到另一种方法。代码如下:C++ 读取文本文件并打印内容c++;,c++,constructor,text-files,C++,Constructor,Text Files,我被告知尽可能少地读/写光盘。对于这个解决方案,我创建了一个构造函数,它在对象构造时读取文件,并用文件的内容填充无序的映射。这是读取.txt文件的好方法/实践吗 在打印文件内容方面,我再次提到了readFile。这样可以吗?如果不让它全球化,我真的找不到另一种方法。代码如下: class Test { private: string name; string number; unordered_map<string, string> mappy; public
class Test {
private:
string name;
string number;
unordered_map<string, string> mappy;
public:
Test()
{
ifstream readFile("A:\\Coding\\namesNumbers.txt");
while (readFile >> name >> number)
{
mappy[name] = number;
}
}
void print()
{
ifstream readFile("A:\\Coding\\namesNumbers.txt");
while (readFile >> name >> number)
{
for (int i = 0; i < 1; i++)
{
cout << name << ":" << " ";
cout << number << endl;
}
}
}
~Test() {};
};
类测试{
私人:
字符串名;
字符串编号;
无序的地图映射;
公众:
测试()
{
ifstream读取文件(“A:\\Coding\\namesNumbers.txt”);
while(读取文件>>名称>>编号)
{
mappy[name]=编号;
}
}
作废打印()
{
ifstream读取文件(“A:\\Coding\\namesNumbers.txt”);
while(读取文件>>名称>>编号)
{
对于(int i=0;i<1;i++)
{
cout您正在读取文件两次。如果您不介意项目的顺序,那么您也可以从“mappy”打印
请注意,最好尽可能在本地声明“name”和“number”
(考虑为'number'i.s.o.'string'使用另一种数据类型。)
在下面的代码中,我假设您有C++17(用于结构化绑定)
类测试{
私人:
无序的地图映射;
公众:
测试()
{
ifstream读取文件(“A:\\Coding\\namesNumbers.txt”);
字符串名;
字符串编号;
while(读取文件>>名称>>编号)
{
mappy[name]=编号;
}
}
作废打印()
{
用于(自动[名称,编号]:mappy)
{
既然你已经在构造函数中读取了文件内容,那么在打印例程中再次读取它们又有什么意义呢?打印出你之前读到的内容。如果问题只是在构造函数中读取文件是否是一种好的做法,那么答案是这取决于上下文。这是一个设计决策,没有任何上下文,我不能说whet她知道是好是坏。名称
/数字
应该是局部变量。为什么要对(int i=0;i<1;i++)执行此“循环”
(只运行一次).你做了一个有效的点Jarod42。我只是在没有循环的情况下打印了它,它也做了同样的事情。谢谢你的回复!名称和数字没有定义。我想这是因为我们在函数中声明了变量。
class Test {
private:
unordered_map<string, string> mappy;
public:
Test()
{
ifstream readFile("A:\\Coding\\namesNumbers.txt");
string name;
string number;
while (readFile >> name >> number)
{
mappy[name] = number;
}
}
void print()
{
for (auto [name, number] : mappy)
{
cout << name << ":" << " ";
cout << number << endl;
}
}
~Test() {};
};