хочу заполнить двумерный массив из текстового файла в функции чтоб позже он обновлялся при перемещении курсора не знаю как дайте подсказку

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

void Fillmap (int arrmap[25][50], const char lenghtMap, const char widthMap)
{   
    for (int i = 0; i < lenghtMap; i++)
    {
        for (int j = 0; j < widthMap; j++)
        {
            arrmap[i][j] = 1;
        }

    }

}

void Printmap (int arrmap[25][50], const char lenghtMap, const char widthMap)
{
    for (int i = 0; i < lenghtMap; i++)
    {
        for (int j = 0; j < widthMap; j++)
        {
            cout << (char)(arrmap[i][j]);
        }
        cout << endl;
    }
}

int main()
{
    setlocale(0, "");

    const char lenghtMap = 25, widthMap = 50;

    int arrmap[lenghtMap][widthMap];

    Fillmap(arrmap, lenghtMap, widthMap);
    Printmap(arrmap, lenghtMap, widthMap);
}

//вот такую беду пробовал пишет что-то непонятное
string adres = "map.txt";
    ifstream maptxt;
    maptxt.open(adres);
    if (!maptxt.is_open())
    {
        cout << "фаил с картой не найден!" << endl;
    }
    else
    {
        cout << "Фаил открыт." << endl;
    
        string a;
        while (!maptxt.eof())
        {
            a = "";
            maptxt >> a;
            cout << a << endl;
        }
    }
    maptxt.close();

╔════════════════════════════════════════════════╗ ║ ☺ ☼ ◙ ☼ ☼ ◙║ ║ ╔ ║ ╚════════════╝ ╚═════════════════════╝ ☼ ☼║ ║ ║ ☼ ☼ ◙ ☼ ☼║ ║ ║◙╔═╗ ╔ ═════════════════════════════════════ ╝ ║ ║ ║☼║ ║ ☼ ║ ║ ║☼║ ║ ╔═════════ ══════════════╗ ╔══════╗ ║ ║ ║◙║ ║ ║☼ ☼ ◙║ ║ ☼ ║ ║ ║ ║☼ ║ ║☼║ ║ ║ ╚═══ ╚════════════════════════════════════════════════╝ примерный текст файла


Ответы (1 шт):

Автор решения: bloody

я постарался реализовать твою задумку:

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

void gettxt (string& buf) 
{
  ifstream openf ("map.txt");
  string tmpbuf;
  while (1) 
  {
     getline (openf, tmpbuf) ;
     if (tmpbuf.size == 0) 
     {
         break;
     }
     buf += tmpbuf += "\n";
  }
  openf.close () ;
}

int main () 
{
   string str;
   gettxt (str) ;
   cout << str;
   system ("pause") ;
}

Так же хочу указать на твои ошибки:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

void Fillmap (int arrmap[25][50], const char lenghtMap, const char widthMap) // Первое: const char* здесь никак не нужен, size_t подойдёт для этих параметров. Второе: размер массива и так известен и передача его размера будет лишней тратой времени стека. Если тебе не удобно по какой-то причине писать его как цифры: Можешь сделать макрос: #define array_lenghtmap 25 и #define array_widthmap 50
{   
    for (int i = 0; i < lenghtMap; i++) // Вряд ли скомпилируется тк i = int, а lengthmap = const char*
    {
        for (int j = 0; j < widthMap; j++) // Вряд ли скомпилируется тк i = int, а lengthmap = const char*
        {
            arrmap[i][j] = 1;
        }

    }

}

void Printmap (int arrmap[25][50], const char lenghtMap, const char widthMap) // То же самое с параметрами
{
    for (int i = 0; i < lenghtMap; i++) // Вряд ли скомпилируется тк i = int, а lengthmap = const char*
    {
        for (int j = 0; j < widthMap; j++) // Вряд ли скомпилируется тк i = int, а lengthmap = const char*
        {
            cout << (char)(arrmap[i][j]);
        }
        cout << endl;
    }
}

int main()
{
    setlocale(0, "");

    const char lenghtMap = 25, widthMap = 50;

    int arrmap[lenghtMap][widthMap];

    Fillmap(arrmap, lenghtMap, widthMap);
    Printmap(arrmap, lenghtMap, widthMap);
}

//вот такую беду пробовал пишет что-то непонятное <-- В следующий раз постарайтесь написать текст ошибки, будь он понятен или нет

// Если вы прям так и пытались скомпилировать - ничего удивительного. Вы пытаетесь написать код вне любой области видимости. 

string adres = "map.txt"; // Трата ресурсов ПК. Можно сделать следующее: ifstream maptxt("map.txt");
    ifstream maptxt;
    maptxt.open(adres); // Можно и конструктором обойтись, но ладно
    if (!maptxt.is_open())
    {
        cout << "фаил с картой не найден!" << endl; // Если вы хотели добавить это в функцию: стоит написать #define MYPROG_INVALID_FILE 0x238874232 и throw MYPROG_INVALID_FILE; , а после return;
    }
    else
    {
        cout << "Фаил открыт." << endl;
    
        string a;
        while (!maptxt.eof())
        {
            a = "";
            maptxt >> a;
            cout << a << endl;
        }
    }
    maptxt.close();
→ Ссылка