Конвертация String в char

Amarok

✩✩✩✩✩✩✩
2 Окт 2019
25
0
Вот как перевожу String в char:
C++:
String stringVar = "hello";
char charVar[stringVar.length()];
stringVar.toCharArray(charVar, stringVar.length()+1);
Захотел эти три строки оформить в функцию, чтобы использовать string2char("text") в разных частях своего кода.
Создал такое:
C++:
char string2char (String inputString) {
  char convertedString[inputString.length()];
  inputString.toCharArray(convertedString, inputString.length()+1);
  return convertedString;
}
При компиляции получаю:
C++:
In function 'char string2char(String)':
error: invalid conversion from 'char*' to 'char' [-fpermissive]
   return convertedString;
          ^
exit status 1
invalid conversion from 'char*' to 'char' [-fpermissive]
Как правильно вернуть из этой функции полученное значение?
 

Александр Симонов

★★★★✩✩✩
2 Авг 2018
727
207
Вот как перевожу String в char:
C++:
String stringVar = "hello";
char charVar[stringVar.length()];
stringVar.toCharArray(charVar, stringVar.length()+1);
Захотел эти три строки оформить в функцию, чтобы использовать string2char("text") в разных частях своего кода.
Создал такое:
C++:
char string2char (String inputString) {
  char convertedString[inputString.length()];
  inputString.toCharArray(convertedString, inputString.length()+1);
  return convertedString;
}
При компиляции получаю:
C++:
In function 'char string2char(String)':
error: invalid conversion from 'char*' to 'char' [-fpermissive]
   return convertedString;
          ^
exit status 1
invalid conversion from 'char*' to 'char' [-fpermissive]
Как правильно вернуть из этой функции полученное значение?
Можете тебе хватит штатного метода c_str() в классе String?

А отвечая непосредственно на твой вопрос:
1. функция должна возвращать char* а не char.
2. Локальные переменные (convertedString) уничтожаются по выходу из функции, нужно динамически выделать память.
 
  • Лойс +1
Реакции: Amarok

Neoris

✩✩✩✩✩✩✩
6 Фев 2020
16
0
@Amarok, вам надо внутрь функции передавать указатель на внешний массив символов, при этом у вас в функции несоответствие размеров массива количеству передаваемых в него символов:
convertedString[inputString.length()];
(convertedString, inputString.length()+1);
Символов передаёте на один больше, чем размер массива