Двумерный массив, загрузка из файла
От: Lyrka  
Дата: 01.02.11 20:04
Оценка:
Ребят, возник вопрос... Есть файл, содержщий к примеру:

ООООМММММММММММ
ООООМММММММММММ
ООООМММММММММММ
МММММММММММММММ
МММММММММММММММ
МММММММММММММММ
МММММММММММММММ

Так вот. Мне нужно его считать в массив, но не весь. А конкретно ту область где находятся символы "О".

while (true)
{
if(i != map_size_x)
{

if(j != map_size_y)
{
j++;
in >> cLoadMap[i][j];
std::cout << cLoadMap[i][j];

}
else
{
j = 0;
i++;
std::cout << "\n";
}
}
else
{
break;
}

}

Этот код как бэ нормально сортирует символы в массиве, но, in >> cLoadMap[i][j]; , заносит все символы в массив из файла по порядку, т.е. там где мне нужно перейти на другую строку, он не переходит, и работает с этой строкой до конца.

Так вот в чем вопрос: как сделать, чтоб из файла считывалось N'ое количество символов в строке, и переходило считывать N'ое количество символов со строки ниже, и т.д.
Re: Двумерный массив, загрузка из файла
От: ZegSoft Россия  
Дата: 01.02.11 22:45
Оценка:
Здравствуйте, Lyrka, Вы писали:

L>Ребят, возник вопрос... Есть файл, содержщий к примеру:


L>ООООМММММММММММ

L>ООООМММММММММММ
L>ООООМММММММММММ
L>МММММММММММММММ
L>МММММММММММММММ
L>МММММММММММММММ
L>МММММММММММММММ

L>Так вот. Мне нужно его считать в массив, но не весь. А конкретно ту область где находятся символы "О".


L>while (true)

L> {
L> if(i != map_size_x)
L> {

L> if(j != map_size_y)

L> {
L> j++;
L> in >> cLoadMap[i][j];
L> std::cout << cLoadMap[i][j];

L> }

L> else
L> {
L> j = 0;
L> i++;
L> std::cout << "\n";
L> }
L> }
L> else
L> {
L> break;
L> }

L> }


L>Этот код как бэ нормально сортирует символы в массиве, но, in >> cLoadMap[i][j]; , заносит все символы в массив из файла по порядку, т.е. там где мне нужно перейти на другую строку, он не переходит, и работает с этой строкой до конца.


L>Так вот в чем вопрос: как сделать, чтоб из файла считывалось N'ое количество символов в строке, и переходило считывать N'ое количество символов со строки ниже, и т.д.


Можно предложить 2 варианта:
1. После того, как прочитал N символов, продолжаешь чтение(но пропускаешь считанные символы) в цикле до тех пор, пока не встретится символ перехода на след. строку ('\n')
2. Читаешь строки не посимвольно, а целиком, функцией std::getline. И соответственно уже из считанной строки вытаскиваешь столько символов, сколько тебе нужно.
Re: Двумерный массив, загрузка из файла
От: strannik747  
Дата: 03.02.11 06:53
Оценка:
Здравствуйте, Lyrka, Вы писали:

Один из вариантов:

const int N = 10; // сколько первых символов каждой строки берем

std::string line;
// читаем до конца файла, при желании можно поменять на for()
while (getline (cin, line))  // читает всю строку в line
{
    std::string str = line.substr (0, N);  // первые N символов в str
    // здесь можно перенести из str в массив символов, если необходимо
}
Re: Двумерный массив, загрузка из файла
От: Lyrka  
Дата: 05.02.11 09:10
Оценка:
Большое спасибо, разобрался !
Re[2]: Двумерный массив, загрузка из файла
От: Lyrka  
Дата: 05.02.11 09:21
Оценка:
Чет рановато я обраловался А как начать считывать допустим в 5ой строки ?
Re[3]: Двумерный массив, загрузка из файла
От: McQwerty Россия  
Дата: 05.02.11 11:06
Оценка:
Здравствуйте, Lyrka, Вы писали:
L>Чет рановато я обраловался А как начать считывать допустим в 5ой строки ?
Съесть (вычитать и выбросить) первых 4.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.