Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
BeginerMan
 Аватар для BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 418
10.01.2014, 19:27     Не удаётся записать строчку из файла #1
Всем здрасьте.
У меня есть файл, и запись в нём.
Мне нужно записать в переменную эту запись. Но не получается
Вот код:
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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2014, 19:27     Не удаётся записать строчку из файла
Посмотрите здесь:

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

C++
1
2
Здрасьте
До свидание
alsav22
5282 / 4801 / 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);
BeginerMan
 Аватар для BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 418
10.01.2014, 20:19  [ТС]     Не удаётся записать строчку из файла #9
Оооо, спасибо, всё работает

Добавлено через 2 минуты
Ну вот, последняя проблема
Он мне выдаёт не понятные символы Если я пытаюсь через MessageBox вывести(это WinAPI)
Я пробовал менять кодировку и файла, везде получаются не понятные символы
Не хочу менять Юникод в проекте...
Что делать?
alsav22
5282 / 4801 / 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);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2014, 14:14     Не удаётся записать строчку из файла
Еще ссылки по теме:

Записать в файл S сначала компонент файла F, затем компонент файла G с сохранением порядка C++
C++ Записать в файл S сначала компонент файла F, затем компонент файла G, с сохранением порядка
C++ Не удаётся связать два файла timer.h и timer.cpp

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

Или воспользуйтесь поиском по форуму:
BeginerMan
 Аватар для BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 418
11.01.2014, 14:14  [ТС]     Не удаётся записать строчку из файла #11
Спасибо вам большое, помогло и без
setlocale
Весьма признателен вам

Добавлено через 20 секунд
Цитата Сообщение от alsav22 Посмотреть сообщение
fin.imbue(locale("rus_rus.1251"));
Этой строчки весьма хватило.
Yandex
Объявления
11.01.2014, 14:14     Не удаётся записать строчку из файла
Ответ Создать тему
Опции темы

Текущее время: 14:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru