Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/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++;_C++_Arrays_Char_Ifstream - Fatal编程技术网

C++ 为什么下一行不执行C++;

C++ 为什么下一行不执行C++;,c++,arrays,char,ifstream,C++,Arrays,Char,Ifstream,我已经附上了我的程序的完整源代码,可以打开.txt文件。它不会在cout之后执行这是一种非常浪费的方法来计算文件中的行数 for (int i=0; getline(inputfiles,line); i++) // i is also completely useless here { length++; } 你读了整个文件,却把所有的东西都扔掉,重新开始!完成此循环后,inputfiles.eof()将为true,您将永远不会在循环期间输入下一个,也不会为循环输入最后一个(因为i

我已经附上了我的程序的完整源代码,可以打开
.txt
文件。它不会在
cout之后执行这是一种非常浪费的方法来计算文件中的行数

for (int i=0; getline(inputfiles,line); i++) // i is also completely useless here
{
     length++;
}
你读了整个文件,却把所有的东西都扔掉,重新开始!完成此循环后,
inputfiles.eof()
将为
true
,您将永远不会在
循环期间输入下一个
,也不会为
循环输入最后一个
(因为
i==count
)。执行直接跳到
inputfiles.close()
,然后从
main
返回

我建议您边走边写
字符串:

for ( ; getline(inputfiles, line); )
{
     // do stuff with line and ditch the global char arrays
}
如果您想存储这些行以备以后使用,那么只需保存它们:)最简单的方法是使用:

std::vector所有这些行;
while(getline,file,line)将所有的行放在后面(line);
在那里,整个文件现在被一行一行地保存在
所有行中。你可以像在数组中一样访问它们,比如
所有行[0]
。你也不需要事先知道行数-向量在向它们添加内容时会自动展开

现在,要解析一行并从中提取格式化输入,请查看所提供的内容。

您问:

然后呢,

file = new char[length][250];
确保在函数结束前调用
delete[]file

你说:

你可以重新开始阅读

    inputfiles.seekg(0);
    count = 0;
    while(!inputfiles.eof())
    {
        inputfiles.getline(file[count],250);
        count++;
    }

为什么不直接使用
getline(cin,new_inputfile);
跳过中间人?文件不是
char
而是
char数组
很大的不同。@NeilKirk你是什么意思?我把
getline(cin,new_inputfile)
放在哪里?而不是
cin.getline(filename,sizeof(filename));字符串new inputfile(filename)
您有
字符串new\u inputfile;getline(cin,new\u inputfile)
@NeilKirk谢谢。我怎么存储这行代码呢?我听说你不用数组也可以。就像我的
txt
文件中的第一行代码是
Name=Mike
,我想把我的Name变量设置为
Mike
。我的第二行代码是
Age=10
,我想把Age变量设置为
10
谢谢。那么我怎么存储呢我要说的那一行?我听说你不用数组也能做到。就像我的
txt
文件中的第一行是
Name=Mike
,我想把我的
Name
变量设置为
Mike
。我的第二行是
Age=10
,我想把
Age
变量设置为10@user4167396我把答案扩大了一点。谢谢:). 有没有办法读取文件,不是存储行,而是将行存储到变量中。例如,如果我的
txt
文件的第一行是
Name=Mike
,我想将我的
Name
变量设置为
Mike
。我的第二行是
Age=10
,我想将
Age
变量设置为
10
。我打算创建一个
setName
setAge
方法来存储行。不过,如果你能自己找出这一部分,我会很高兴:)提示:你可以做
int-age;cin>>年龄。您可以对
ifstream
对象而不是
cin
执行相同的操作。下一行呢?每行都有一个新值,因此需要一个新变量。请帮帮我,这对我来说意义重大me@MattMcNabb,我感谢你的评论。有时候,对我来说,直截了当地回答OP的问题比建议一种不同但更好的方法更有意义。有时我确实建议采用不同的方法。对于这个问题,我觉得直截了当地回答这个问题更有意义。我不知道你说的“直截了当”是什么意思
char file[length][250]
是非法的,必须用一些法律代码替换。我的建议纠正了这个问题。它建议对OP的代码进行最小的修改,使代码合法化。这就是我回答“切中要害”的意思。
//      char file[length][250]; <- How can I create the array based on the length variable?
char (*file)[250] = NULL;
file = new char[length][250];
// CODE DOES NOT EXECUTE AFTER THIS.
    inputfiles.seekg(0);
    count = 0;
    while(!inputfiles.eof())
    {
        inputfiles.getline(file[count],250);
        count++;
    }