Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как прео тип string в char без потери русских букв 
:(
    Опции темы
vladd
Дата 6.6.2012, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 31.1.2009

Репутация: нет
Всего: нет



Здравствуйте!
У меня Borland C++ Bulder Enterprise Suite Version 6.0(Build 10.155) 
Имею структуру. Нужно с консоли её заполнить на русском языке так, чтобы при обратном выводе русские буквы не превратились в кракозябры. Для этого для считывания с консоли использую код
Код

 string sStr1;
  
  cout << "Введите ФИО больного: ";
            getline(cin, sStr1);

             strcpy(pacien.Bolnoy,sStr1);// заполнение структуры

pacien - структура
pacien.Bolnoy - элемент структуры
 

На строку 
Код

  strcpy(pacien.Bolnoy,sStr1);// заполнение структуры

ругается.
Код

E2034 Cannot convert 'string' to 'const char *'


Что нужно сделать, чтобы заполнить структуру, оно не ругалось и при выводе сохранились русские буквы.

Это сообщение отредактировал(а) vladd - 6.6.2012, 09:55
PM MAIL   Вверх
artsb
Дата 6.6.2012, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Код

strcpy(pacien.Bolnoy,sStr1.c_str());



--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
vladd
Дата 6.6.2012, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 31.1.2009

Репутация: нет
Всего: нет



Спасибо, но русских букв уже нет.

user posted image

Функция копирования исказила их. 

Это сообщение отредактировал(а) vladd - 6.6.2012, 10:23
PM MAIL   Вверх
artsb
Дата 6.6.2012, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Как выглядит ваша структура?

Добавлено через 40 секунд
И почему вы не пользуетесь WideChar?


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
vladd
Дата 6.6.2012, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 31.1.2009

Репутация: нет
Всего: нет



Вопрос считаю решенным. Остается узнать как правильно заполнить структуру без потери русских букв. 
Вопрос к модератору.
Мне надо открыть новую тему или же можно здесь продолжить?

Добавлено через 2 минуты и 13 секунд
Моя структура
Код

struct Pacient {
//string Bolnoy [10]; // ФИО пациента
  char Bolnoy [10];
  char Doctor [10]; // ФИО врача
  int Age;         // Возвраст
  char Diagnoz [10];    // Диагноз
  char Otdelenie [10];  // Отделение

  Pacient *prev;       // Указатель на предыдущую запись
  Pacient *next;       // Указатель на последующую запись
};

PM MAIL   Вверх
artsb
Дата 6.6.2012, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



vladd, используйте юникод:
user posted image
Код

struct Pacient {
    wchar_t Bolnoy [10];
    wchar_t Doctor [10]; // ФИО врача
    int Age;         // Возвраст
    wchar_t Diagnoz [10];    // Диагноз
    wchar_t Otdelenie [10];  // Отделение
    Pacient *prev;       // Указатель на предыдущую запись
    Pacient *next;       // Указатель на последующую запись
};

int _tmain(int argc, _TCHAR* argv[])
{
    Pacient Pac;
    Pacient *p = &Pac;

    setlocale(LC_ALL, "");

    std::wcout << L"Введите ФИО больного: ";
    std::wcin >> p->Bolnoy;
    std::wcout << std::endl;
    std::wcout << L"Вы ввели: " << p->Bolnoy << std::endl;

    system("pause");

    return 0;
}



--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
vladd
Дата 6.6.2012, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 31.1.2009

Репутация: нет
Всего: нет



Не работает этот код у меня.
Код

#include <clx.h>
#include <conio.h>
#include <iostream.h>
#include <conio.h>
#include <clx.h>
#include <fstream.h>
#include <iomanip.h>
  #include <windows.h>
   #include <string>
   #include <locale>
   #pragma hdrstop
#include <stdio.h>
using namespace System;
 using namespace std;
   struct Pacient {
    wchar_t Bolnoy [10];
    wchar_t Doctor [10]; // ФИО врача
    int Age;         // Возвраст
    wchar_t Diagnoz [10];    // Диагноз
    wchar_t Otdelenie [10];  // Отделение
    Pacient *prev;       // Указатель на предыдущую запись
    Pacient *next;       // Указатель на последующую запись
};
int _tmain(int argc, _TCHAR* argv[])
{
    Pacient Pac;
    Pacient *p = &Pac;
    setlocale(LC_ALL, "");
    std::wcout << L"Введите ФИО больного: ";
    std::wcin >> p->Bolnoy;
    std::wcout << std::endl;
    std::wcout << L"Вы ввели: " << p->Bolnoy << std::endl;
    system("pause");
    return 0;
}

user posted image
PM MAIL   Вверх
artsb
Дата 6.6.2012, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Аномалия какая-та. Не может же программа взять и пропустить половину строк. Не записав при этом никаких ошибок...


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
vladd
Дата 6.6.2012, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 31.1.2009

Репутация: нет
Всего: нет



По моему программа на них вообще не реагирует. Буква w, когда первая в слове, запрещает реагировать на функции. Видимо что то связано с Windows.

Добавлено через 2 минуты и 52 секунды
Если я комментирую библиотеки тогда появляются ошибки. 
PM MAIL   Вверх
artsb
Дата 6.6.2012, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Цитата(vladd @  6.6.2012,  13:02 Найти цитируемый пост)
Буква w, когда первая в слове, запрещает реагировать на функции. Видимо что то связано с Windows.

Неа. Буква w и Винда тут не причём.

Цитата(vladd @  6.6.2012,  13:02 Найти цитируемый пост)
Если я комментирую библиотеки тогда появляются ошибки.  

Ну это понятно.

Попробуй в дебагере пройтись по шагам и посмотри что будет.
И выложи этот неработающий проект на каком-нибудь файлообменнике.

Это сообщение отредактировал(а) artsb - 6.6.2012, 13:36


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
vladd
Дата 6.6.2012, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 31.1.2009

Репутация: нет
Всего: нет



Вот на форуме попробую

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  Unit3.rar 29,55 Kb
PM MAIL   Вверх
artsb
Дата 6.6.2012, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



У меня работает. Правда без CLX. Зачем вы вообще подключаете clx.h?


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
vladd
Дата 6.6.2012, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 31.1.2009

Репутация: нет
Всего: нет



Закоментировал #include <clx.h>. Все то же самое. Сейчас попробую закачать другой с++ builder 6. Может в самой программе какие глюки.
PM MAIL   Вверх
artsb
Дата 6.6.2012, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



- Попробуйте создать проект заного. Убедитесь, что всякие там галочки типа "CLX" сняты.
- Попробуйте установить все доступные патчи для BCB6.
- Попробуйте воспользоваться более свежей версией C++Builder.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
vladd
Дата 7.6.2012, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 31.1.2009

Репутация: нет
Всего: нет



Все переустановил.Создал проект заново. А где брать эти патчи для BCB 6?
Всё то же самое. Может проблема в Windows? У меня стоит XP 3.
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0532 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.