Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 确定外部文件中字符串的长度_C++_File_Io - Fatal编程技术网

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

C++ 确定外部文件中字符串的长度,c++,file,io,C++,File,Io,我以这种格式将数据保存到外部文件中 Line 1: Name1|Address1 Line 2: Name2|Address2 现在,我将把这些数据读回我的程序。我想将名称存储在变量名中,变量名是一个字符数组。但是,我的讲师要求必须动态分配名称数组。因此,我不能只宣布 name[100]; 那么,什么是确定文件中名称长度的有效方法,以便我可以使用它来分配字符串。将其作为std::string读入,然后调用name.size()?你可以在“第一”部分中对“*”进行分割,以获得名称。 < P>我

我以这种格式将数据保存到外部文件中

Line 1: Name1|Address1
Line 2: Name2|Address2
现在,我将把这些数据读回我的程序。我想将名称存储在变量名中,变量名是一个字符数组。但是,我的讲师要求必须动态分配名称数组。因此,我不能只宣布

name[100];

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

将其作为std::string读入,然后调用name.size()?你可以在“第一”部分中对“*”进行分割,以获得名称。

< P>我不确定这是否遵循了你的指导者的指示,但是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::ifstream文件(“data.txt”);
std::字符串名;
std::字符串地址;
while(文件){
std::getline(文件,名称“|”);
std::getline(文件、地址);

std::cout蛮力方法是:
1.将数组大小设置为零。
2.如果需要扩展数组大小:
2.1.分配一个比旧数组大1的新数组。
2.2.将以前数组中的所有字符复制到新数组中。
2.3.将新字符附加到新数组。
3.增加数组大小变量


要分配的大小有所不同。一些字符串实现的大小是旧数组的两倍。另一些使用斐波那契序列。

是“第1行:”和“第2行:”行本身的一部分?还是这些行只是“名称|地址”?讲师是否说您必须动态分配数组或动态分配内存以进行存储?您所追求的是每个姓名的存储,还是如何分配内存以保存所有姓名?对Marlon:第1行和第2行不是该行的一部分。对Tod:他要求我以某种方式扫描文本文件中的数据以确定名称或地址的长度,以便可以根据其长度很好地存储在动态分配的数组中。在我看来,讲师希望学生学习读取输入长度并动态分配数组。如果是这样,只需读入std::string就可以避免…rob05c是正确的,讲师要求我进入文本文件,确定字符串的长度,然后使用此长度分配新的字符数组。此外,他不允许使用字符串类。他要求我使用字符数组