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

Перегрузка операторов вывода для русификации строк - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Написать и протестировать функцию http://www.cyberforum.ru/cpp-beginners/thread97254.html
Кто нибудь понял эту задачу??? Я лично не понял.. кто понял помогите мне плиз... 1. Написать и протестировать функцию, которая «переворачивает» строку, передаваемую ей в качестве параметра.
C++ Освобождение памяти Добрый день. Пишу в рубрику "Вопросы начинающих по С/С++" посему вопрос глупый :) И все же, есть такой код //offset - массив байт. Т.е., читаю с определенной позиции сразу в дабл double* Xmin=(double*)&offset; outShape->Points().set_X(*X); //Надо бы освободить память delete Xmin; //Run time ошибка http://www.cyberforum.ru/cpp-beginners/thread97242.html
C++ Простые примеры программ на рекурсию
Всем привет! У кого есть простые примеры программ на рекурсию, забросьте пожалуйста!!!
C++ Имитация клавишь в другом окне
Какая команда отвечает за вывод из буфера текста в окно другой программы (Блокнот) и имитирует нажатие клавиши "Enter" ?
C++ Условия остановки цикла http://www.cyberforum.ru/cpp-beginners/thread97223.html
А как задать условие для: 1) Допустим идет цикл вычислений. Необходимо прервать вычисления при условии, что 3 последних вычислений будут совпадать с точностью до 6-ти знаков после запятой. Например у нас есть ряд ответов 1,2569874 1,1235646 1,12356874 1,12356882 1,12356814 тут программа прервет вычисления потому что 3 последних ответа одинаковы до 6-ти знаков после запятой. 2) Условия для...
C++ Работа с файлами помогите написать программу на си !Которая считывает текст из файла и выводит на экран предложения не содержащие запятых. подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
19.02.2010, 19:07     Перегрузка операторов вывода для русификации строк
В gcc вот так работает:
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
#include <iostream>
#include <string>
#include <windows.h>
    
class RuText {
public:
    RuText() : p(NULL) {}
    RuText(const std::string& s){
        int len = s.size();
        p = new char [len + 1];
        CharToOem(s.c_str(), p);
    }
    ~RuText(){
        if ( p != NULL ){
            delete [] p;
            p = NULL;
        }
    }
    friend std::ostream& operator << (std::ostream& ost, const RuText& rt){
        ost << rt.p;
        return ost;
    }   
private:
    char *p;
};
 
int main(){
    std::cout << RuText("Хело, мир!") << std::endl;
    std::cout << RuText("Гудбай, мир!") << std::endl;
    return 0;
}
А мелкомягкий CL не нашёл CharToOem
Код
rutext.obj : error LNK2019: unresolved external symbol __imp__CharToOemA@8 refer
enced in function "public: __thiscall RuText::RuText(class std::basic_string<cha
r,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0RuTex
t@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
rutext.exe : fatal error LNK1120: 1 unresolved externals
Где-то тут на форуме было, как с этим бороться, лень искать...

Добавлено через 9 минут
В прочем, если в MS VS 2005 создать проект "console application", то
вот так
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
// rutext.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <string>
#include <windows.h>
 
class RuText {
public:
    RuText() : p(NULL) {}
    RuText(const std::string& s){
        int len = s.size();
        p = new char [len + 1];
        CharToOemA(s.c_str(), p);
    }
    ~RuText(){
        if ( p != NULL ){
            delete [] p;
            p = NULL;
        }
    }
    friend std::ostream& operator << (std::ostream& ost, const RuText& rt){
        ost << rt.p;
        return ost;
    }   
private:
    char *p;
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    std::cout << RuText("Хело, мир!") << std::endl;
    std::cout << RuText("Гудбай, мир!") << std::endl;
    system("PAUSE");
    return 0;
}
всё работает.
 
Текущее время: 14:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru