Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 427
#1

Не удаётся записать строчку из файла - C++

10.01.2014, 19:27. Просмотров 373. Ответов 10
Метки нет (Все метки)

Всем здрасьте.
У меня есть файл, и запись в нём.
Мне нужно записать в переменную эту запись. Но не получается
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <Windows.h>
#include <fstream>
using namespace std;
 
int main()
{
    LPWSTR name;
 
    ifstream fin;
    fin.open("file.txt");
    if(fin.fail()) return 0;
 
    fin >> name;
 
    fin.close();
 
    return 0;
}
Пишет на ошибку оператора >>.

error C2678: бинарный ">>": не найден оператор, принимающий левый операнд типа "std::ifstream" (или приемлемое преобразование отсутствует)
при попытке сопоставить список аргументов "(std::ifstream, LPWSTR)".

Почему он не хочешь записывать в LPWSTR ?
Если записать в char, то как ? И как потом можно будет перевести из char в LPWSTR ?? Вродь функция есть swprintf
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2014, 19:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не удаётся записать строчку из файла (C++):

Пропустить строчку при чтении из файла - C++
Подскажите как? Спасибо)

Сформировать два текстовых файла из целых чисел. Записать в третий файл минимальный элемент первого файла и максимальный элемент второго файла - C++
Тема: работа с текстовыми файлами с использованием стандартных функций библиотеки stdio.h Нужно составить программу: Сформировать два...

Не удаётся связать два файла timer.h и timer.cpp - C++
Добрый вечер, у меня есть класс и библиотеки которые нужно использовать в нескольких программах, по этому я хочу сделать отдельный файл...

Записать в третий файл только те пары чисел, в которых число из первого файла меньше соответствующего числа из второго файла. - C++
Дано два файла, содержащих одинаковое количество целых чисел. Записать из них в третий файл только те пары чисел, в которых число из...

Записать в конец файла строчку, из начала файла стереть строчку - PHP
Как из начала файла удалить первую строчку и в конец файла записать другую строчку, чтобы количество строчек не изменилось?

Каждую строчку файла записать в переменную - PHP
Всем привет, хочу реализовать следующее: Надо из файла поочередно брать каждую строку и записывать ее в одну и ту же переменную например...

10
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.01.2014, 19:30 #2
C++
1
wifstream fin;
Но под name память нужно выделить.
0
BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 427
10.01.2014, 19:33  [ТС] #3
Типо так?
C++
1
2
LPWSTR* s;
s = new LPWSTR;
0
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.01.2014, 19:36 #4
Цитата Сообщение от BeginerMan Посмотреть сообщение
Типо так?
Типо так:
C++
1
 LPWSTR name = new wchar_t[255];
1
BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 427
10.01.2014, 19:38  [ТС] #5
Ааа, спасибо большое.
0
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.01.2014, 19:42 #6
fin >> прочитает только слово (до первого пробельного символа). Если нужно строку из нескольких слов прочитать:
C++
1
fin.getline(name, 255);
0
BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 427
10.01.2014, 19:49  [ТС] #7
Это я знаю
А как поступить, если мне нужно к примеру, что бы в LPWSTR был массив, в одном было записано одно, в другом другое ?
Придётся двойной что ли делать ?
LPSWTR name = new wchar_t[20][2] ????
Например в файле такая запись.

C++
1
2
Здрасьте
До свидание
0
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.01.2014, 20:01 #8
C++
1
2
3
4
5
6
7
8
9
10
LPWSTR* name = new LPWSTR[2];
for (int i = 0; i < 2; ++i)
    name[i] = new wchar_t[20];
 
wifstream fin;
fin.open("file.txt");
if(fin.fail()) return 0;
 
for (int i = 0; i < 2; ++i)
    fin.getline(name[i], 20);
1
BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 427
10.01.2014, 20:19  [ТС] #9
Оооо, спасибо, всё работает

Добавлено через 2 минуты
Ну вот, последняя проблема
Он мне выдаёт не понятные символы Если я пытаюсь через MessageBox вывести(это WinAPI)
Я пробовал менять кодировку и файла, везде получаются не понятные символы
Не хочу менять Юникод в проекте...
Что делать?
0
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.01.2014, 20:42 #10
Если так (файл в ANSI):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
setlocale(0, "rus_rus.1251");
    
    LPWSTR* name = new LPWSTR[2];
    for (int i = 0; i < 2; ++i)
        name[i] = new wchar_t[20];
 
    wifstream fin;
    fin.imbue(locale("rus_rus.1251"));
    fin.open("file.txt");
    if(fin.fail()) return 0;
 
    for (int i = 0; i < 2; ++i)
        fin.getline(name[i], 20);
1
BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 427
11.01.2014, 14:14  [ТС] #11
Спасибо вам большое, помогло и без
setlocale
Весьма признателен вам

Добавлено через 20 секунд
Цитата Сообщение от alsav22 Посмотреть сообщение
fin.imbue(locale("rus_rus.1251"));
Этой строчки весьма хватило.
0
11.01.2014, 14:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2014, 14:14
Привет! Вот еще темы с ответами:

Скопировать определенную строчку из одного файла и вставить в определенную строчку другого файла - CMD/BAT
как можно скопировать первые несколько символов (букв) из определенной строки (например 5-ой) modems.txt, далее найти в parametr.txt слово...

.NET 4.x Не удаётся записать в реестр - C#
простейшая операция: RegistryKey Example =...

Не удаётся записать правильно данные в БД - C#
Всем привет. Не удаётся подключиться к БД. string myConnectionString = &quot;Database=test;Data Source=11.22.133.166;User...

Как записать строчку в батник - C++ Builder
Друзья, как это - mkdir &quot;\\?\%~d0\autorun.inf\name..\&quot; Как записать в батник ? Так нельзя TStringList *file = new TStringList(); ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru