45 / 42 / 48
Регистрация: 13.05.2015
Сообщений: 222
1

Функция для считывания символа из файла в переменную wchar_t

11.06.2015, 15:39. Показов 3258. Ответов 21
Метки нет (Все метки)

Вот такой вот в общем код. Какой функцией можно считывать посимвольно символы из файла в переменную wchar_t? get(s) не подходит, отказывается компилироваться. И почему wcout не выводит count?

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
#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <locale>
using namespace std;
using std::wcin;
using std::wcout;
using std::wstring;
 
 
const wchar_t* direction()
{
    wcout << L"Введите путь к файлу, который хотите зашифровать (файл должен существовать): " << std::endl;
    wstring name;
    std::getline(std::wcin,name);
    const wchar_t* direction = name.c_str();
    return direction;
}
 
void count_of_file(const wchar_t*)
{
    ifstream f(direction()); size_t count=0;
    if (!f)
        wcout << L"Неправильно задан путь, введите путь в формате: $(DiskName)\$(FileName).txt" << std::endl << std::endl;
    else
    {
        wchar_t s;
        while(!f.eof())
        {
            >>>f.get(s);<<<
            count++;
        }
    }
    count-=1;
    >>>>wcout << count;<<<<
}
 
void main(void)
{
    wcout.imbue(std::locale("rus_RUS.866"));
    wcout.imbue(std::locale("rus_RUS.866"));
    count_of_file();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2015, 15:39
Ответы с готовыми решениями:

Функция для считывания строки до конкретного символа
Мне надо считать текстовый файл с разделителями Tab, вот мне интересно есть ли в vba фунция для...

Нужна небуферизированная функция для считывания одного символа
Здавствуйте! Мне нужна небуферизированная функция для считывания одного символа. В Window был...

Функция считывания из файла для map
в файле задана последовательность ключ-точка(map&lt;string,MYPOINT&gt;). Помогите, пожалуйста, написать...

Есть ли в С++ функция для считывания информации с файла с подробной настройкой?
Есть ли в С++ функция для считывания информации с файла с подробной настройкой?Мне нужно будет...

21
lss
939 / 867 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
11.06.2015, 15:43 2
http://www.cplusplus.com/reference/cwchar/
1
45 / 42 / 48
Регистрация: 13.05.2015
Сообщений: 222
11.06.2015, 17:02  [ТС] 3
Цитата Сообщение от Mamoruhiko Посмотреть сообщение
const wchar_t* direction()
Возвращает билиберду. Что делать?

Добавлено через 30 минут
ап.
0
lss
939 / 867 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
11.06.2015, 18:06 4
Цитата Сообщение от Mamoruhiko Посмотреть сообщение
C++
1
2
wcout.imbue(std::locale("rus_RUS.866"));
wcout.imbue(std::locale("rus_RUS.866"));
А для wcin где?
0
7350 / 6275 / 2853
Регистрация: 14.04.2014
Сообщений: 27,193
11.06.2015, 19:23 5
У тебя же name - локальная переменная. Возвращай wstring.
2
45 / 42 / 48
Регистрация: 13.05.2015
Сообщений: 222
12.06.2015, 00:07  [ТС] 6
Как можно перевести из wchar_t в const wchar_t*?

Добавлено через 53 минуты
А лучше wstring в const wchar_t*.
0
lss
939 / 867 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
12.06.2015, 00:32 7
Цитата Сообщение от Mamoruhiko Посмотреть сообщение
wstring в const wchar_t*
c_str().
1
45 / 42 / 48
Регистрация: 13.05.2015
Сообщений: 222
12.06.2015, 15:15  [ТС] 8
Уже надоел, наверное, но всё же - как перевести char в wchar_t? Поисковыми системами пользоваться я умею, но, честно говоря, разобраться не смог
Здесь, есть что-то, однако не очень понятно.

Добавлено через 1 минуту
Ах да, это будут динамические массивы одинаковой размерности, содержащие текст. Мало ли что

Добавлено через 15 минут
И да, там будут русские буквы.

Добавлено через 31 минуту
Мне необходимо следующее: открыть текстовый файл, в динамический массив типа char записать данные, преобразовать его в wchar_t, а потом работать с ним. Или есть варианты сразу считать его в wchar_t?
0
lss
939 / 867 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
12.06.2015, 15:21 9
Цитата Сообщение от Mamoruhiko Посмотреть сообщение
Или есть варианты сразу считать его в wchar_t?
В чём, собственно, проблема? На то и есть потоки и функции для работы с широкими символами.

Добавлено через 1 минуту
http://www.cplusplus.com/refer... /wistream/
0
45 / 42 / 48
Регистрация: 13.05.2015
Сообщений: 222
12.06.2015, 15:25  [ТС] 10
Пробовал так, но что-то тут не так:
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
#include "stdafx.h"
#include <fstream>
#include <iostream>
using namespace std;
 
using std::wcin;
using std::wcout;
using std::wstring;
 
size_t fcount(void)
{
    ifstream in("D:\\In.txt", ios::in); size_t count=0; char ch;
 
    if (!in) wcout << L"Файл не открыт." << endl;
    else {
        while(!in.eof()) {
        in >> ch;
        count++;
        };
        return count;
    }
}
 
int main(){
    wcout.imbue(std::locale("rus_RUS.866"));
    wcin.imbue(std::locale("rus_RUS.866"));
    wifstream.imbue(std::locale("rus_RUS.866"));
    size_t count = fcount();
    cout << count;
    wchar_t *text = new wchar_t[count]; size_t i=0;
    std::wifstream in("D:\\In.txt", ios::in);
    if (!in) wcout << L"Файл не открыт." << endl;
    while (!in.eof()) {
    in >> text[i];
    i++;
    }
    in.close();
    wcout << text;
}
0
lss
939 / 867 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
12.06.2015, 15:56 11
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
    wcout.imbue(std::locale("rus_RUS.866"));
    wcin.imbue(std::locale("rus_RUS.866"));
    //wifstream.imbue(std::locale("rus_RUS.866"));
    size_t count = fcount();
    //cout << count << endl;
    wchar_t *text = new wchar_t[count]; 
    size_t i = 0;
    
    std::wofstream fout("D:\\In.txt");
    fout.imbue(std::locale("rus_RUS.866"));
    fout << L"Проба";
    fout.close();
    
    std::wifstream in("D:\\In.txt", ios::in);
    in.imbue(std::locale("rus_RUS.866"));
    if (!in)
    {
        wcout << L"Файл не открыт." << endl;
        system("pause");
        return 0;
    }
    wchar_t text2[10] = {};
    while (!in.eof()) 
    {
        in >> text2[i];
        i++;
    }
    in.close();
    wcout << text2 << endl;
    system("pause");
    return 0;
Миниатюры
Функция для считывания символа из файла в переменную wchar_t  
0
lss
939 / 867 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
12.06.2015, 15:58 12
http://rsdn.ru/forum/cpp/1853603.hot
0
45 / 42 / 48
Регистрация: 13.05.2015
Сообщений: 222
12.06.2015, 17:54  [ТС] 13
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
48
#include "stdafx.h"
#include <fstream>
#include <iostream>
using namespace std;
 
using std::wcin;
using std::wcout;
using std::wstring;
 
size_t fcount(void)
{
    ifstream in("D:\\In.txt", ios::in); size_t count=0; char ch;
 
    if (!in) wcout << L"Файл не открыт." << endl;
    else {
        while(!in.eof()) {
        in >> ch;
        count++;
        };
        return count;
    }
}
 
int main(){
    wcout.imbue(std::locale("rus_RUS.866"));
    wcin.imbue(std::locale("rus_RUS.866"));
    size_t count = fcount();
    cout << count;
    wchar_t *text = new wchar_t[count]; size_t i=0;
    
    std::wifstream in("D:\\In.txt", ios::in);
    in.imbue(std::locale("rus_RUS.866"));   
    if (!in) {
        wcout << L"Файл не открыт." << endl;
        system("pause");
        return 0;
    }
    else {
        while (!in.eof()) {
        in >> text[i];
        i++;
        }
        in.close();
        wcout << text << endl;
    }
    system("pause");
    return 0;
}
Миниатюры
Функция для считывания символа из файла в переменную wchar_t  
0
lss
939 / 867 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
12.06.2015, 17:59 14
Не видно, что и как в файл записывалось, кодировка файла и пр.
0
45 / 42 / 48
Регистрация: 13.05.2015
Сообщений: 222
12.06.2015, 18:13  [ТС] 15
Кодировка ANSI, обычный txt файл, запись в нём уже предварительно сделана, это слово Проба.
0
lss
939 / 867 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
12.06.2015, 18:18 16
Цитата Сообщение от Mamoruhiko Посмотреть сообщение
запись в нём уже предварительно сделана
...
Цитата Сообщение от lss Посмотреть сообщение
Не видно ... как в файл записывалось
0
45 / 42 / 48
Регистрация: 13.05.2015
Сообщений: 222
12.06.2015, 18:26  [ТС] 17
lss, вручную, с клавиатуры
0
lss
939 / 867 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
12.06.2015, 19:35 18
Цитата Сообщение от Mamoruhiko Посмотреть сообщение
вручную, с клавиатуры
Тогда кириллица в какой кодировке, в файле, получается?
0
45 / 42 / 48
Регистрация: 13.05.2015
Сообщений: 222
12.06.2015, 19:54  [ТС] 19
866?
0
45 / 42 / 48
Регистрация: 13.05.2015
Сообщений: 222
12.06.2015, 19:56  [ТС] 20
Так?
Миниатюры
Функция для считывания символа из файла в переменную wchar_t  
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.06.2015, 19:56
Помогаю со студенческими работами здесь

Функция считывания из текстового файла
Здравствуйте, написал функцию, работает некорректно, может слишком долго работаю, но не вижу в чем...

Функция считывания слов с текстового файла
Доброго времени суток!) Задача такова: Считать из текстового файла слова в массив (создать для...

Универсальная функция считывания переменных из бинарного файла
Подскажите, написал запись в бинарный файл переменных, не могу считать, точнее функция должна быть...

Функция seekq, вместо повторного считывания файла (txt)
Всем привет, ребят. Я тут новый и это мой первый пост :) И вопрос у меня вот какой.. Мне нужно...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru