Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/47: Рейтинг темы: голосов - 47, средняя оценка - 4.81
-44 / 2 / 3
Регистрация: 22.12.2015
Сообщений: 508

Как считать строку из файла в char?

24.06.2018, 11:06. Показов 10160. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Считать строку из файла в string - не проблема. Функцию getline() и погнали. Но мне нужно загнать данные в массив char[N][50]. Как это сделать? Я предполагаю, что можно считать строку в string, конвертировать ее в char и записать в массив. Но нужна опять же функция для преобразования string в char. Но мне кажется, что должен быть и способ записи напрямую. Подскажите?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.06.2018, 11:06
Ответы с готовыми решениями:

Считать строку в char[] из файла
Есть готовая программа, в которой используется JPasswordField. private JPasswordField password; password=new JPasswordField(10); ...

Считать с файла строку типа char до знака окончания строки
Всем доброго времени суток. Мне нужно считать с файла строку типа char до знака окончания строки ( '\0'). Как мне это сделать? Я...

Как считать русский символ в char и файла
Здравствуйте! Мне нужно считать из файла текст для кодирования. Текст в файле должен быть на русском языке. Проблема в том, что при...

8
 Аватар для mvngr
225 / 189 / 98
Регистрация: 15.04.2018
Сообщений: 718
24.06.2018, 11:25
Лучший ответ Сообщение было отмечено Imperion как решение

Решение

Как самый простой вариант - создать string[N]

Если нужны char, и массив динамический, а не именно на 50 символов, то используйте str.c_str() у экземпляра string

Если массив статический, то легче всего просто написать функцию

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void writeInStaticArray(char (&a)[50], string s){
    int min = 50 < s.size() ? 50 : s.size(); //находим минимальную длину (либо больше строка, либо те 50 символов
    for(int i = 0; i < min; i++)
        a[i] = s[i];
    return;
}
 
int main()
{
    char c[3][50];
    string s = "Lorem ipsum dolor sit amet, consectetur adipisicing elit.";
    writeInStaticArray(c[0], s);
 
    cout << c[0] << endl;
 
    return 0;
}
1
-44 / 2 / 3
Регистрация: 22.12.2015
Сообщений: 508
24.06.2018, 11:36  [ТС]
Я попробовал сделать еще вот как:

C++
1
2
3
4
5
6
i=0;
while (!file.eof()){
getline(filr,s);
d=s.length();
for (j=0; j<d; j++) 
    mass[i][j]=s[j];
i++;
}

По идее, я просто перезаписываю символы из строки в char. Но в итоге я пытаюсь вывести содержимое массива mass и мне выдает какой-то мусор. Почему так происходит?
0
 Аватар для mvngr
225 / 189 / 98
Регистрация: 15.04.2018
Сообщений: 718
24.06.2018, 11:39
Возможно, из-за того, что вы не добавляете символ конца строки '\0'
1
-44 / 2 / 3
Регистрация: 22.12.2015
Сообщений: 508
24.06.2018, 11:46  [ТС]
Цитата Сообщение от mvngr Посмотреть сообщение
Возможно, из-за того, что вы не добавляете символ конца строки '\0'
Его нужно приклеить к строке string? И для чего это нужно, можете рассказать?
0
Заблокирован
24.06.2018, 11:47
C++
1
2
3
file>>mass[i];
//или
getline(file,mass[i]);
0
 Аватар для mvngr
225 / 189 / 98
Регистрация: 15.04.2018
Сообщений: 718
24.06.2018, 11:47
Imperion, сказать то я могу, но навык использования google вам нужен больше
1
-44 / 2 / 3
Регистрация: 22.12.2015
Сообщений: 508
24.06.2018, 12:07  [ТС]
Biger18, пробовал сделать также. Не получается.
Если делать таким образом: file>>mass[i]; то ошибок не выдает, но аналогично выводит мусор. Каким образом можно добавить '\0' в конец слова char? Пробовал так: mass[i]+='\0' - не получается, ошибка

Добавлено через 13 минут
Все разобрался) Всем спасибо за помощь!
0
Заблокирован
24.06.2018, 12:09
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    char s[2][100]={"jdfglhj;'","fuioppjp[;"};
    fstream f("f.txt",ios_base::out);
    for(int i=0; i<2; i++)
        f<<s[i]<<endl;
    f.close();
    f.open("f.txt",ios_base::in);
    for(int i=0; i<2; i++)
    {
        s[i][0]=0;//для чистоты эксперимента
        f>>s[i];
        cout<<s[i]<<endl;
    }
    f.close();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.06.2018, 12:09
Помогаю со студенческими работами здесь

Как считать из файла текст в двумерный массив типа char и отсортировать в алф. порядке?
Постановка задачи: Исходные данные считать из текстового файла через отдельную функцию. Дана строка символов, состоящая из...

Считать из компонента строку в char
Можно ли обойтись при выводе или считывании строки обычным типом char, не ковертируя в AnsiString и наоборот(объекты:RichEdit, ListBox и...

Как считать строку из файла ресурсов
Здравствуйте. помогите, пожалуйста, с решением небольшой задачки..как мне считать строку из файла ресурсов (имя и строка уже есть в файле...

Как считать из файла вторую строку?
хочу узнать как можно считать первую строку или в вторую. То есть к примеру есть несколько строчек и мне нужно считать именно вторую! как...

Как считать определенную строку из файла
Как прочитать, например, 5ю строку из файла, не загружая его в массив строк (т.к. файл может быть слишком большим). Обязательно ли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru