确定外部文件中字符串的长度

时间:2012-03-05 18:57:47

标签: c++ file io

我将数据保存为此格式的外部文件

Line 1: Name1|Address1
Line 2: Name2|Address2

现在,我要将这些数据读回我的程序。我想将名称存储在变量NAME中,该变量是一个字符数组。但是,我的讲师要求必须动态分配NAME数组。出于这个原因,我不能只声明

name[100];

那么,确定文件中名称长度的有效方法是什么,以便我可以用它来分配我的字符串。

3 个答案:

答案 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