Изменить значение 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, это может быть то, что вы искали