Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/22: Рейтинг темы: голосов - 22, средняя оценка - 4.95
 Аватар для Katya!
3 / 3 / 4
Регистрация: 27.12.2009
Сообщений: 103

Считать содержимое файла в строковый массив

10.02.2015, 13:50. Показов 4596. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Я подсчитала кол-во строк в файле (переменная x). Далее создаю массив с подсчитанной размерностью.
C++
1
2
3
4
5
6
7
8
ifstream file ("1.txt");
string line;
int x = 0;
while (getline(file, line))
    {
        x++;
    }
string *mass = new string[x];
Как мне теперь добавить строки из этого файла в массив?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.02.2015, 13:50
Ответы с готовыми решениями:

Строковый массив (объявить пустой глобальный строковый массив из 16 элементов)
Подскажите, как объявить пустой глобальный строковый массив из 16 элементов? в качестве элементов будут указаны пути к графическим...

Как попроще считать определённую строку из файла и присвоить её содержимое string переменной?
#include <iostream> #include <fstream> #include <windows.h> using namespace std; int main() { SetConsoleCP(1257); ...

Считать содержимое файла на экран, задерживая текст на экране до нажатия клавиши при полном заполнении экрана
Ребят помогите пожайлуста, сделал код по которому выводиться содержимое файла. Вот само условие: Дан текстовый файл. Считать...

30
 Аватар для Katya!
3 / 3 / 4
Регистрация: 27.12.2009
Сообщений: 103
10.02.2015, 15:58  [ТС]
Студворк — интернет-сервис помощи студентам
С просто string не работает =)
0
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35
10.02.2015, 16:09
Katya!, Вы в "визуальной студии" работаете?
0
 Аватар для Katya!
3 / 3 / 4
Регистрация: 27.12.2009
Сообщений: 103
10.02.2015, 16:11  [ТС]
Да. В VS 2013. Можно же наверно с вложенным циклом как нибудь сделать. Например, беру первый элемент вектора strings и сравниваю его во вложенном цикле с каждым элементом names. Если строка найдена в names, то выводим в консоль и т. д.
0
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35
10.02.2015, 16:14
Замените EnumWindows на EnumWindowsА, а все wstring на string. Напишите результат.
0
 Аватар для Katya!
3 / 3 / 4
Регистрация: 27.12.2009
Сообщений: 103
10.02.2015, 16:16  [ТС]
EnumWindowsA красным подчеркивает..
0
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35
10.02.2015, 16:20
Katya!, правильно думаете, но проблема не в этом сейчас. А в том, что разные типы. Это нужно поправить.

Добавлено через 3 минуты
Цитата Сообщение от Katya! Посмотреть сообщение
EnumWindowsA красным подчеркивает..
тогда другой вариант.
Зайдите в Project -> Properties -> ConfigurationProperties -> General -> Character Set
И выставьте в Not set
0
 Аватар для Katya!
3 / 3 / 4
Регистрация: 27.12.2009
Сообщений: 103
10.02.2015, 16:23  [ТС]
Сделала, все также подчеркивает красным.
0
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35
10.02.2015, 16:26
Katya!, EnumWindowsA верните обратно в EnumWindows(забыла дописать).
0
 Аватар для Katya!
3 / 3 / 4
Регистрация: 27.12.2009
Сообщений: 103
10.02.2015, 16:28  [ТС]
Если заменить wstring на string, то ошибка в:
C++
1
names->push_back(str);
C++
1
2
3
4
5
Error   1   error C2664: 'void std::vector<std::string,std::allocator<_Ty>>::push_back(const std::basic_string<char,std::char_traits<char>,std::allocator<char>> &)' : cannot convert argument 1 from 'wchar_t [512]' to 'std::basic_string<char,std::char_traits<char>,std::allocator<char>> &&'   d:\c++\consoleapplication1\consoleapplication1\main.cpp 17  1   ConsoleApplication1
 
    2   IntelliSense: no instance of overloaded function "std::vector<_Ty, _Alloc>::push_back [with _Ty=std::string, _Alloc=std::allocator<std::string>]" matches the argument list
            argument types are: (wchar_t [512])
            object type is: std::vector<std::string, std::allocator<std::string>>   d:\c++\ConsoleApplication1\ConsoleApplication1\main.cpp 17  9   ConsoleApplication1
0
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35
10.02.2015, 16:32
Лучший ответ Сообщение было отмечено Katya! как решение

Решение

Katya!,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include <windows.h>
using namespace std;
 
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
    std::vector<std::string>* names = (std::vector<std::string>*) lParam;
 
    if (IsWindowVisible(hwnd) && (!GetWindow(hwnd, GW_OWNER)))
    {
        char str[512] = { 0 };
        if (GetWindowTextA(hwnd, str, 511))
        {
            names->push_back(str);
        }
    }
 
    return 1;
}
 
int main()
{
    setlocale(LC_ALL, "Rus");
    vector<string> strings;
    ifstream file ("config.cfg");
    string line;
    while (!std::getline(file, line).eof())
        strings.push_back(line);
    strings.push_back(line);
    file.close();
    copy(strings.begin(), strings.end(), ostream_iterator<string>(cout, "\n"));
 
        vector<string> names;
        EnumWindows(&EnumWindowsProc, (LPARAM)&names);
        ostream_iterator<std::string, char> out(cout, "\n");
        copy(names.begin(), names.end(), out);
 
        for (int i=0; i < names.size(); i++)
            for (int j = 0; j < strings.size(); ++j)
                if (names[i] == strings[j]) cout << "Ok: " << names[i] << "\n";
 
    system("pause>>null");
    return 0;
}
1
 Аватар для Katya!
3 / 3 / 4
Регистрация: 27.12.2009
Сообщений: 103
10.02.2015, 17:55  [ТС]
Так как нужно, чтобы программа постоянно работала фоном, я заключила ее в бесконечный цикл (по другому не знаю как сделать).
Вопрос: можно ли как-то сделать, чтобы те строки которые уже есть в открытом на запись файле заново туда не записывались? Нельзя же одновременно записывать и читать файл?! Или есть какое-то другое решение?
C++
1
2
3
4
5
6
7
8
9
10
11
12
    for (;;)
    {
        vector<string> names;
        EnumWindows(&EnumWindowsProc, (LPARAM)&names);
        ostream_iterator<std::string, char> out(cout, "\n");
        for (int i = 0; i < names.size(); i++)
        for (int j = 0; j < strings.size(); ++j)
        if (names[i] == strings[j])
        {
            file_log << names[i] << endl;
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.02.2015, 17:55

Нужно записать массив в файл, а потом из этого файла считать этот же массив
Помогите, пожалуйста, никогда с файлами делов не имела. Нужно записать массив в файл, а потом из этого файла считать этот же массив. ...

Дан строковый файл. Создать новый строковый файл, содержащий все строки исходного файла наименьшей длины (в том же порядке).
Даны имена двух файлов вещественных чисел. Известно, что первый из них существует и является непустым, а второй в текущем каталоге...

Считать массив А с файла a.txt. после чего сформировать массив С в котором все отрицательные элементы с масси
Помогите написать программу на C++. Изучала этот язык меньше пол года, пока есть проблемы. очень нужна ваша помощь Считать массив А с файла...

Считать с файла в массив
Подскажите, как считать посимвольно из файла в двумерный массив через fscanf? например в файле: ав сd и если посимвольно...

Считать из файла в массив
Добрый день форумчани, у меня маленькое недопонимание. В смысле я не могу считать из файла в МАССИВ, данный массив есть объектом главного...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru