我将数据保存为此格式的外部文件
Line 1: Name1|Address1
Line 2: Name2|Address2
现在,我要将这些数据读回我的程序。我想将名称存储在变量NAME中,该变量是一个字符数组。但是,我的讲师要求必须动态分配NAME数组。出于这个原因,我不能只声明
name[100];
那么,确定文件中名称长度的有效方法是什么,以便我可以用它来分配我的字符串。
答案 0 :(得分:1)
蛮力方法是:
1.将数组大小设置为零
2.如果需要扩展数组大小:
2.1。分配一个比旧数组大1的新数组
2.2。将前一个数组中的所有字符复制到新数组中
2.3。将新字符附加到新数组。
3.增加数组大小变量。
要分配的大小有所不同。一些字符串实现的大小是旧数组的两倍。其他人使用斐波那契序列。
答案 1 :(得分:0)
以std :: string的形式读取它,然后调用name.size()?你可以拆分“|”在第一部分中得到名称。
答案 2 :(得分:0)
我不确定这是否遵循了教师的指示,但C ++方式是使用std::string
(因为您标记为C ++)而不是字符数组。
std::ifstream file("data.txt");
std::string name;
std::string address;
while (file) {
std::getline(file, name, '|');
std::getline(file, address);
std::cout << "Name: " << name << "Address: " << address << "\n";
}
std::getline
将读取垂直条上的所有字符并将该值存储在name
中,然后将其余字符读取到新行,并将该值存储在{{1 }}。如果您想要address
中的字符数,请拨打name
。