Изменить значение String в верхнем регистре в файле заголовка С++?

Я пытаюсь преобразовать строку в верхний регистр в мою функцию файла заголовка. Однако, когда я пытаюсь это сделать, я получаю сообщение об ошибке "Невозможно преобразовать из класса" String "в" char ".

Здесь мой код -

#ifndef PATIENT_DEMO_CLASS
#define PATIENT_DEMO_CLASS

// system defined preprocessor statement for cin/cout operations
#include <iostream.h>
// header file from book
#include "tstring.h"
#include <algorithm>
#include <string>

class PatientDemographicInformation
{
    private:
    // patient state
    String patientState;

    public:
    // constructor
    PatientDemographicInformation(String state);

    // returns the patient state in all capital letters
    String getPatientState( );
};
// assign values to constructor
PatientDemographicInformation::PatientDemographicInformation(String state)
{
    patientState = state;
}

String PatientDemographicInformation::getPatientState( )
{
    int i=0;
// ------The line below this is where my error occurs--------
    char str[] = {patientState};
    char c;
    while (str[i])
    {
    c=str[i];
    putchar (toupper(c));
    i++;
    }
    return patientState;
}

Это только часть раздела кода из файла заголовка. "patientState" определяется в конструкторе как String. Дайте мне знать, если мне нужно опубликовать больше кода. Пожалуйста, помогите, в любом случае, вы можете.

Спасибо - Джош

Ответ 1

В С++ нет такого типа, как String. Если вы имеете в виду С++/CLI, то я думаю, что тип возврата должен быть объявлен как String ^. Если это просто опечатка, и вы имеете в виду класс std::string, тогда было бы проще написать

for ( char c : patientState ) putchar (toupper(c));

Ответ 2

Вам не нужно преобразовывать String в char[]: просто обрабатывать каждый символ "на лету". Поскольку вы не укажете точный тип и String достаточно отличается от std::string, что он может быть чем-то другим (в частности, верхним символом первой строки), неясно, какая операция может использоваться для доступа к символам внутри, Однако. Ни в коем случае вы не сможете инициализировать char str[], однако: как переменная, это массив статического размера с размером, полученным из инициализации.

Однако вам нужно сделать только то, что вы передаете действительные аргументы только toupper(): эта функция потребляет только положительные значения и специальное значение EOF. Однако char может быть подписано, т.е. Вы должны использовать toupper() следующим образом:

toupper(static_cast<unsigned char>(c))

где c является char, который вы получили где-то.

Ответ 3

Посмотрите Std::string:: c_str, это может быть то, что вы искали