如何在 C++ 中的同一程序中对 2D 字符串数组进行 ofstream 和 ifstream。这是我写的代码。我是初学者

How to ofstream and then ifstream a 2D string array in same program in c++. Here is the code which I wrote. I am a starter

#include <iostream>
#include<fstream>
using namespace std;

int main()
{
    int a;
    cout<<"enter key ";
    cin>>a;
    if(a==1)
    {
        string info[0][1];
        cout<<"enter your name ";
        getline(cin, info[0][0]);

        cout<<"enter father's ";
        getline(cin, info[0][1]);

        ofstream file("info.txt");
        for(int i=0;i<=1;i++)
        {
            file<<info[0][i]<<"   ";
        }

        file.close();
    }
    int b;
    cout<<"enter b ";
    cin>>b;
    if(b==2)
    {
        char info[0][1];
        ifstream file("info.txt");
        for(int j=0;j<=1;j++)
        {
            file>>info[0][j];
        }
        cout<<endl;
        for(int i=0;i<=4;i++)
       {
           cout<<info[0][i]<<"    ";
       }

    }
    return 0;
}

我想以二维数组的形式存储用户和他父亲的名字(代码中没有提到的其他信息),并且ofstream那个数组和后来的ifstream相同。

代码中:

输入 a=1 后,它显示“输入您的姓名”,它没有接受任何输入,即在键盘输出 window 中没有输入任何内容。 (没有编译错误)请帮忙!!

我正在代码块中编码。

这不是合法的 C++(因为大小为零的数组是非法的)。

    string info[0][1];
    cout<<"enter your name ";
    getline(cin, info[0][0]);

    cout<<"enter father's ";
    getline(cin, info[0][1]);

    ofstream file("info.txt");
    for(int i=0;i<=1;i++)
    {
        file<<info[0][i]<<"   ";
    }

你只需要两个个字符串,所以只需要

    string info[2];
    cout<<"enter your name ";
    getline(cin, info[0]);

    cout<<"enter father's ";
    getline(cin, info[1]);

    ofstream file("info.txt");
    for(int i=0;i<2;i++)
    {
        file<<info[i]<<"   ";
    }

当你试图读回它们时,你犯了同样的错误,并添加了一个新的

    char info[0][1];

为什么在这里切换到char?同样,您需要两个字符串。

    string info[2];

最后出于某种原因你试图输出五个字符串。

   for(int i=0;i<=4;i++)
   {
       cout<<info[0][i]<<"    ";
   }

同样,二是神奇的数字

   for(int i=0;i<2;i++)
   {
       cout<<info[i]<<"    ";
   }

另外,您遇到了 Yksisarvinen 提到的问题。您需要按照 link.

中提到的方式进行修复