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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
#1

wcout, wfstream в Code Blocks - C++

20.07.2012, 21:29. Просмотров 2227. Ответов 37
Метки нет (Все метки)

Не пойму, почему компилятор не определяет wcout, wfstream. #include <iostream>, #include <fstream>, using namespace std; сделаны. В std, подсказкой, он мне их показывет. Но после попытки компиляции пишет, или, что они не объявлены, или (если я так пишу: std::wcout), что в std нет таких.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2012, 21:29     wcout, wfstream в Code Blocks
Посмотрите здесь:

Не запускается программа в Code::Blocks - C++
Доброго времени суток. Я написала программу, но CodeBlocks просто не запускает её. Уже долго сижу, не понимаю, где же ошибка. Подскажите...

Ошибки компиляции в Code::blocks - C++
Взял код отсюда http://www.cyberforum.ru/blogs/290325/blog1114.html, выделил полностью, ctrl+c, ctrl+v, сохранить как winapi.cpp, build and...

Многофайловая программа Code Blocks - C++
нужно вычислить произведение матриц при помощи функций,что делаю не так,в чём ошибки?спасибо файл main.cpp: #include &lt;iostream&gt; ...

Связать переменные в Code BLocks C++ - C++
В одно проекте связываю файлы. В одном файле вычисления, а в другом - задание переменных. Выдает ошибку. #include &lt;iostream&gt; ...

Раздельная компиляция ( Code blocks) - C++
версия 16.01 при вызове функции из другого файла, стал писать, что я не указал прототип функции и &quot;ld returned 1 exit status&quot;. хотя делал...

Code::Blocks 10.05. Windows. No such or directory. - C++
Ребята, здравствуйте... Начал искать себе компилятор для программирования с среде Windows. Свой выбор остановил на IDE Code::Blocks. Вроде...

Работа с WinAPI в Code::Blocks - C++
Первый не касается win api но важен для понимания. Чем отличаются 2 примера на практике char *str; // 1 char *str = new char; // 2 ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.07.2012, 08:44  [ТС]     wcout, wfstream в Code Blocks #21
Или я не понял, о чем вы? Об этом: ifstream f(s[i]); ? Или об этом: wfstream fw(sw[i]);
Этот разве не подходит: explicit basic_ifstream(const char* s, ios_base::openmode mode = ios_base::in); ?
xADMIRALx
67 / 61 / 1
Регистрация: 09.06.2012
Сообщений: 291
21.07.2012, 11:42     wcout, wfstream в Code Blocks #22
Цитата Сообщение от alsav22 Посмотреть сообщение
Написал, что подменил, а подменить не удаётся. Если вместо того mingv, что идёт в комплекте, помещаю скачанный по ссылке и прописываю в Toolchain executables путь к нему, то:
Нажмите нет,зайдите в *Code Blocks -> Settings -> Compiler and debugger settings -> Toolchain executables затем жмите на 3 точки [button...] И указываете на скачанный mingw

затем идем в Additional Patch указываем папку bin в mingw то есть mingw -> bin
в Search directorions -> Resource compiler ставим папку include то есть mingw -> include
затем Linker -> Search derictorions указываем папку lib это у нас mingw -> lib

Должно помочь
soon
2538 / 1303 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
21.07.2012, 16:29     wcout, wfstream в Code Blocks #23
Или об этом: wfstream fw(sw[i]);
Этот разве не подходит: explicit basic_ifstream(const char* s, ios_base::openmode mode = ios_base::in);
Нет. const wchar_t* и const char* разные типы
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.07.2012, 16:59  [ТС]     wcout, wfstream в Code Blocks #24
Цитата Сообщение от soon Посмотреть сообщение
Нет. const wchar_t* и const char* разные типы
Это тогда как понимать? В MSVC:
C++
1
2
typedef basic_ifstream<char, char_traits<char> > ifstream;
typedef basic_fstream<wchar_t, char_traits<wchar_t> > wfstream;
В Code Blocks:
C++
1
2
typedef basic_ifstream<char> ifstream;
typedef basic_ifstream<wchar_t>  wifstream;
И, вообще, класс шаблонный?
soon
2538 / 1303 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
21.07.2012, 17:05     wcout, wfstream в Code Blocks #25
alsav22, и в чем разница?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.07.2012, 17:21  [ТС]     wcout, wfstream в Code Blocks #26
Цитата Сообщение от soon Посмотреть сообщение
alsav22, и в чем разница?
Раз так пишут: typedef basic_ifstream<wchar_t> wifstream; (и пишет не MSVC), значит есть конструктор. Или я не прав? Если есть шаблонный класс, то что мешает вместо char поставить wchar_t ?
soon
2538 / 1303 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
21.07.2012, 17:30     wcout, wfstream в Code Blocks #27
Цитата Сообщение от alsav22 Посмотреть сообщение
Раз так пишут: typedef basic_ifstream<wchar_t> wifstream; (и пишет не MSVC), значит есть конструктор. Или я не прав?
Еще раз. Станадртом определено всего 5 конструторов. И среди них нет конструтора, принимающего wchar_t или wstring.
modwind
52 / 52 / 1
Регистрация: 09.03.2012
Сообщений: 101
21.07.2012, 17:51     wcout, wfstream в Code Blocks #28
что мешает вместо char поставить wchar_t
Visual Studio позволяет указывать имя файла в виде wchar_t*, но по стандарту должно поддерживаться только char*, даже если сам поток юникодовый. Имена файлов в "широких" символах UTF-16 непереносимы на другие платформы.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.07.2012, 18:05  [ТС]     wcout, wfstream в Code Blocks #29
Хорошо, давайте отвлечёмся. Почему Code Blocks выдаёт вот такое и как это понимать:
D:\Code B\q\main.cpp||In function 'int main()':|
D:\Code B\q\main.cpp|33|error: no matching function for call to 'std::basic_fstream<wchar_t, std::char_traits<wchar_t> >::basic_fstream(wchar_t*&)'|
d:\program files (x86)\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\fstream|795|note: candidates are: std::basic_fstream<_CharT, _Traits>::basic_fstream(const char*, std::_Ios_Openmode) [with _CharT = wchar_t, _Traits = std::char_traits<wchar_t>]|
d:\program files (x86)\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\fstream|782|note: std::basic_fstream<_CharT, _Traits>::basic_fstream() [with _CharT = wchar_t, _Traits = std::char_traits<wchar_t>]|
d:\program files (x86)\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|87|note: std::basic_fstream<wchar_t, std::char_traits<wchar_t> >::basic_fstream(const std::basic_fstream<wchar_t, std::char_traits<wchar_t> >&)|
||=== Build finished: 1 errors, 8 warnings ===|
Добавлено через 2 минуты
xADMIRALx, сейчас буду пробовать.
modwind
52 / 52 / 1
Регистрация: 09.03.2012
Сообщений: 101
21.07.2012, 18:06     wcout, wfstream в Code Blocks #30
Потому, что не откроет он wchar_t файл, хоть ты тресни )
C++
1
wfstream fw(s[i]);
Так будет работать.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.07.2012, 18:26  [ТС]     wcout, wfstream в Code Blocks #31
Цитата Сообщение от modwind Посмотреть сообщение
Потому, что не откроет он wchar_t файл, хоть ты тресни )
Вообще уже ничего не понимаю! Почему же он тогда это показывет?!
typedef basic_ifstream<wchar_t> wifstream;
modwind
52 / 52 / 1
Регистрация: 09.03.2012
Сообщений: 101
21.07.2012, 18:37     wcout, wfstream в Code Blocks #32
GCC изначально линуксовый компилятор. А там файловая система другая и имена файлов в кодировке UTF-8. Да, wifstream считывает символы wchar_t, но имён файлов это не касается. Они будут типа char*.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.07.2012, 18:54  [ТС]     wcout, wfstream в Code Blocks #33
Цитата Сообщение от xADMIRALx Посмотреть сообщение
Нажмите нет,зайдите в *Code Blocks -> Settings -> Compiler and debugger settings -> Toolchain executables затем жмите на 3 точки [button...] И указываете на скачанный mingw

затем идем в Additional Patch указываем папку bin в mingw то есть mingw -> bin
в Search directorions -> Resource compiler ставим папку include то есть mingw -> include
затем Linker -> Search derictorions указываем папку lib это у нас mingw -> lib

Должно помочь
После этих действий, ещё что-нибудь жать нужно? Если ничего не жать, то, при попытке компиляции, пишет:
"q - Debug" uses an invalid compiler. Probably the toolchain path within the compiler options is not setup correctly?! Skipping...
Nothing to be done.
Если жать Auto-detect или Reset defaults, то подключает прежний.

Добавлено через 16 минут
Цитата Сообщение от modwind Посмотреть сообщение
GCC изначально линуксовый компилятор. А там файловая система другая и имена файлов в кодировке UTF-8. Да, wifstream считывает символы wchar_t, но имён файлов это не касается. Они будут типа char*.
Вот так переписал
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
#include <iostream>
#include <fstream>
#include <Windows.h>
 
using namespace std;
 
int main()
{
    //setlocale(0, "");
    //SetConsoleCP (1251);
    //SetConsoleOutputCP (1251);
 
    char *s[4] = {"upload.txt", "uploadANSI.txt", "uploadUNICOD.txt", "uploadUNICOD BIg.txt"};
    //wchar_t *sw[4] = {L"upload.txt", L"uploadANSI.txt", L"uploadUNICOD.txt", L"uploadUNICOD BIg.txt"};
    char buff[500];
    //wchar_t wbuff[500];
 
 
    for (int i = 0; i < 4; i++)
    {
        ifstream f(s[i]);
        if (!f.is_open()) cout << "Error!" << endl;
        f.getline(buff, 500);
        cout << s[i] << endl;
        cout << buff << endl;
        f.close();
    }
 
    for (int i = 0; i < 4; i++)
    {
        wfstream fw(s[i]);
        //if(!(fw.is_open()))cout << "Error!" << endl;
        //fw.getline(wbuff, 500);
        //wcout << sw[i] << L'\n';
        //wcout << wbuff << L'\n';
        fw.close();
    }
 
    system("pause");
    return 0;
}
Вот такое выдаёт :
||=== q, Debug ===|
||warning: auto-importing has been activated without --enable-auto-import specified on the command line.|
obj\Debug\main.o||In function `main':|
D:\Code B\q\main.cpp|8|undefined reference to `__gxx_personality_sj0'|
||Info: resolving std::cout by linking to __imp___ZSt4cout |
||=== Build finished: 1 errors, 1 warnings ===|
4iFF
19 / 19 / 1
Регистрация: 06.07.2012
Сообщений: 88
21.07.2012, 20:09     wcout, wfstream в Code Blocks #34
Лучше VC 2010 и без проблем.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.07.2012, 21:52  [ТС]     wcout, wfstream в Code Blocks #35
Цитата Сообщение от 4iFF Посмотреть сообщение
Лучше VC 2010 и без проблем.

Не по теме:

Как я согласен!

alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.07.2012, 22:08  [ТС]     wcout, wfstream в Code Blocks #36
Подскажите, знающие люди, если скачать компилятор по этой ссылке: http://code.google.com/p/mingw-builds/downloads/list его нужно устанавливать как-то, или достаточно указать пути. Папка с файлами компилятора mingv, скачанного по ссылке, так выглядит, а папка того, что идёт в комплекте с Code Blocks, так. Есть подозрение, что Code Blocks, в папке скачаного, чего-то не находит.
Миниатюры
wcout, wfstream в Code Blocks   wcout, wfstream в Code Blocks  
soon
2538 / 1303 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
21.07.2012, 22:12     wcout, wfstream в Code Blocks #37
Цитата Сообщение от alsav22 Посмотреть сообщение
Как я согласен!
Однако, заметьте - все это безобразие началось из-за того, что MSVC не поддерживает стандарт, в результате чего вы написали платформозависимый(скорее, даже непереносимый) код. Что хорошо, возможно, только в продакшене.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2012, 00:24     wcout, wfstream в Code Blocks
Еще ссылки по теме:

Размер консоли в Code::Blocks - C++
Не знаю что за прикол, но когда компилирую программу то окно консоли которое выскакивает нереально маленькое, причем размер его изменить...

Code::Blocks не видит <iostream.h> - C++
Работаю с прогой Code::Blocks, проста и удобна. В основном работаю на Си. Но хотел проверить код математичесского парсера на C++ ,...

Code Blocks не видит компилятор - C++
Ребята, недавно пользуюсь linux. Установил себе Code Block среду разработки. При запуске пишет ошибку что то вроде компилятор интел с/с++...

работа с файлами на Code::Blocks С++ - C++
Добрый вечер, Уважаемые Форумчани. Помогите мне пожалуйста в поисках информации по работе с файлами С++ на Code::Blocks В частности...

Code::Blocks - no such file or directory - C++
Привет всем. Создаю header - Cat.h и добавляю его в проект. Выдается ошибка &quot;Cat.h: no such file or directory &quot; Что может быть не...


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.07.2012, 00:24  [ТС]     wcout, wfstream в Code Blocks #38
Цитата Сообщение от soon Посмотреть сообщение
Однако, заметьте - все это безобразие началось из-за того, что MSVC не поддерживает стандарт, в результате чего вы написали платформозависимый(скорее, даже непереносимый) код. Что хорошо, возможно, только в продакшене.

Не по теме:

И тут, я так согласен!



Добавлено через 2 часа 8 минут
Цитата Сообщение от modwind Посмотреть сообщение
Потому, что не откроет он wchar_t файл, хоть ты тресни )
C++
1
wfstream fw(s[i]);
Так будет работать.
Так действительно работает. Значит дело было в имени файлов. Благодарю всех! xADMIRALx, скачанный компилятор мне всё-таки удалось подключить к Code Blocks, спасибо, что подсказали направление.
Yandex
Объявления
22.07.2012, 00:24     wcout, wfstream в Code Blocks
Ответ Создать тему
Опции темы

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