C++ 正在读取文件,尝试返回2D字符数组

C++ 正在读取文件,尝试返回2D字符数组,c++,arrays,c++11,character-arrays,C++,Arrays,C++11,Character Arrays,嘿,我试图在函数参数中获取一个文件,并返回一个2D字符数组、2D字符指针或2D向量。。不确定我应该用哪一种。我想2D字符数组可以保持简单。基本上,我不知道我要读入的文件中每一行的长度,所以我不确定常规数组的长度。我把一张普通的纸想象成一个非常大的2D数组。这是我到目前为止得到的,它仍然是空的,因为我还不知道返回什么 void ReadFile(std::string &file) { //This is a file reader object. This time I am

嘿,我试图在函数参数中获取一个文件,并返回一个2D字符数组、2D字符指针或2D向量。。不确定我应该用哪一种。我想2D字符数组可以保持简单。基本上,我不知道我要读入的文件中每一行的长度,所以我不确定常规数组的长度。我把一张普通的纸想象成一个非常大的2D数组。这是我到目前为止得到的,它仍然是空的,因为我还不知道返回什么

void ReadFile(std::string &file)
{

    //This is a file reader object. This time I am passing the name of the file as an argument into the constructor.

    std::ifstream TheReader(file);
    int lineLength = 0;
    int numLines = 0;

    char linebreak = 13;
    char singleCharacter;
    if (TheReader.is_open())
    {
        TheReader.get(singleCharacter);


        if (singleCharacter != linebreak)
        {
            lineLength++;
            TheReader.get(singleCharacter);
        }
        else if (singleCharacter == 13)
        {
            numLines++;
        }


        std::vector<std::vector<int>> myVector;
        lineLength = 0;
        numLines++;

        TheReader.close();

    }
    else
    {
        std::cout << "Error. Unable to open file" << std::endl;
    }

}
void ReadFile(标准::字符串和文件)
{
//这是一个文件读取器对象。这次我将文件名作为参数传递给构造函数。
std::ifstream TheReader(文件);
int lineLength=0;
int numLines=0;
字符换行符=13;
字符单字符;
if(读卡器打开()
{
TheReader.get(单字符);
if(单字符!=换行符)
{
线宽++;
TheReader.get(单字符);
}
else if(单字符==13)
{
numLines++;
}
std::vector myVector;
线宽=0;
numLines++;
TheReader.close();
}
其他的
{

std::cout您可能希望返回std::vector 诸如此类

std::vector<std::string> ReadFile(const std::string &file)
{
    std::vector<std::string> output;
    std::ifstream TheReader(file.c_str());
    std::string line;
    while (std::getline(TheReader, line))
        output.push_back(line);
    return output;
}
std::vector ReadFile(const std::string&file)
{
std::矢量输出;
std::ifstream TheReader(file.c_str());
std::字符串行;
while(std::getline(reader,line))
输出。推回(线);
返回输出;
}

???但您从输入中读取最多2个字符,甚至不尝试将其int值推入向量向量中,顺便说一句,向量向量向量在作用域退出后将无法生存。要获取行吗?使用
std::getline
函数。我尝试使用std::getline(阅读器,我在这里放什么?数组[0][1]?,char 13(回车为delim))。很抱歉,我需要澄清,我希望当它到达回车符时,它开始进入2d数组的下一行。我试图比较当前字符,看看它是否是回车符。如果是,跳过它并将下一个字符推到新数组的开始处。这就是代码的作用。数组的第二个维度实际上是字符串它本身。但是你可以像对待向量一样对待它。例如,这给你第四行的第三个字符:output[4][3]我发布的代码中有什么不起作用?为什么要传递向量引用作为参数以再次返回它?您不需要显式使用“\n”分隔符,这是默认值。我尝试使用它,但错误向量下标一直超出范围。我想这是因为它没有正确地分隔行。对不起,您没有GHT想从C++的一个非常基础的编程教程开始。