C++ c++;存储在字符数组中的文件的行
我希望能够使用函数将整行读取到字符数组中 输入文本示例如下:C++ c++;存储在字符数组中的文件的行,c++,arrays,C++,Arrays,我希望能够使用函数将整行读取到字符数组中 输入文本示例如下: Schmidt, Helga Alvarez, Ruben Zowkowski, Aaron Huang, Sun Lee Einstein, Beverly 但是,我不知道如何将整行字符读入数组。我知道>>的分隔符是空白,但我不确定是否将该分隔符更改为“\n”是否有效 void buildList(char (*array)[25], ifstream& inputFile){ string line; f
Schmidt, Helga
Alvarez, Ruben
Zowkowski, Aaron
Huang, Sun Lee
Einstein, Beverly
但是,我不知道如何将整行字符读入数组。我知道>>的分隔符是空白,但我不确定是否将该分隔符更改为“\n”是否有效
void buildList(char (*array)[25], ifstream& inputFile){
string line;
for (int i = 0; i < 5; i++)
getline(inputFile, line);
array[i] = line.c_str();
}
void构建列表(char(*array)[25],ifstream&inputFile){
弦线;
对于(int i=0;i<5;i++)
getline(输入文件,行);
数组[i]=line.c_str();
}
目前,这只在我的输入中读取姓氏或名字,而不是整行。我不知道如何才能改变这一点。谢谢。用这个-
void buildList(char (*array)[25], ifstream& inputFile){
for (int i = 0; i < 5; i++)
std::inputFile.getline(array[i],50);
}
void构建列表(char(*array)[25],ifstream&inputFile){
对于(int i=0;i<5;i++)
std::inputFile.getline(数组[i],50);
}
getline
的第二个参数是写入字符数组的最大字符数。首先,您肯定要在这里使用std::string
。一旦你
要做到这一点,可以使用std::getline
:
std::vector<std::string>
buildList( istream& input )
{
std::vector<std::string> results;
std::string line
while ( std::getline( input, line ) ) {
results.push_back( line );
}
}
for ( int i = 0; i != 5; ++ i ) {
input.getline( array[i], maxLength );
}
另外:函数不应将std::ifstream&
作为
参数(除非它要打开或关闭文件)。一
应使用std::istream&。@JoeZ返回字符串,而不是char*。请尝试使用getline。就是这样。您始终可以将字符串转换为char*array。@WorldDominator准确地说,它将字符串作为输出参数。当然,你总是可以得到任何字符串的
cstr
。我真的建议你使用std::string
版本的getline
,但是如果你绝对坚持不使用,有些版本是使用原始char
缓冲区的流成员。@Hulk我刚刚按照您的建议编辑了我的代码,但编译器给了我一个问题:“将'const char*'赋值为'char[25]'时的不兼容类型”。我不确定c_str是否对我有帮助。如果我使用getline,我会得到一个错误:调用“getline(std::ifstream&,char[25])时没有匹配的函数。该函数在std
命名空间中声明。不过我使用的是命名空间std。不是因为我用了字符[25]而不是字符串吗?是的,我忽略了这一点,我将编辑答案。这是完全错误的。接受char*
的getline
是std::istream
的成员,必须在调用中使用成员语法。它还需要一个最大长度作为第二个参数。谢谢你,詹姆斯!input.getline工作得非常出色。我的教授说我们应该用char**来做这个作业,所以我才这么做。而且,他还没有研究过向量。我会记住istream&出于好奇,为array[]
分配的内存在哪里?是什么设置了数组中所有的char*
?@worldsdominator我观察到了一些类似的东西。从逻辑上讲,我不相信有人会在教你std::vector
和std::string
之前,向你介绍类似于char(*array)[25]
(指向25char
数组的指针,或者指向第一个这样的数组的指针)的声明,但我一直在调用站点看到它。@JoeZ。我猜他有类似于字符数据[5][25]
,并将数据
作为参数传递。然而,什么让我明白:做正确的(如果这是他的数据声明,他做得对)需要知道C++类型的一些更神秘的方面。“这将是我最后教的东西之一。”詹姆斯坎泽说实话,这位老师教学很差,已经两个星期没上课了。如果他在这里的话,我已经学到了很多东西。他说我们必须在主函数中将数组初始化为数组[5][25](我使用的是头文件)。这就是我传递char(*array)[25]的原因。