Как я могу вернуть строковое значение из функции в С++

Вопрос:#include #include using namespace std; std::string dispCard(int card) { string textCard = "help"; //cout

Вопрос:#include <iostream> #include <string> using namespace std; std::string dispCard(int card) { string textCard = «help»; //cout << textCard; system(«pause»); return textCard; } int main() { // Using this area to test functions for now cout << dispCard(14); return 0; }

Разоблачение строки cout фактически отображает значение. Но я не могу вернуть значение в строке.

Честно говоря, я понятия не имею, почему это не работает. Я изначально просто хотел использовать “char”, но по какой-то причине это не работает.

Visual Studio не понравилось:

char test; test = «help»;

Он подчеркнул “=”.

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

Лучший ответ:

Разоблачение строки cout фактически отображает строку. Но не возвращать строку.

Ваша программа печатает и возвращает строку, снова печатая ее в main. Единственные проблемы, которые я вижу с вашей программой:

  1. Вы используете system(«pause») без причины.
  2. Вы не согласны с использованием либо std:: prefix, либо импорта пространства имен. В связи с этим я настоятельно рекомендую префикс std::.
  3. Вы не используете аргумент функции.

Я изначально просто хотел использовать “char”, но по какой-то причине это не работает.

Ну, char, как следует из названия, может хранить только 1 символ. В:

char test = «help»;

вы пытаетесь присвоить 5 символов (4 + ) объектам, размер которых может хранить только 1. Это причина, по которой ваш компилятор жаловался.

Ответ №1

Я думаю, вам нужно передать int в вашу функцию и вернуть ее в строковой форме. Чтобы сделать это преобразование, вам нужно что-то вроде этого:

std::ostringstream stm; stm << yourIntValue; std::string s(stm.str());

или это:

char bf[100]; sprintf(bf, «%d», yourIntValue); std::string s(bf);

Если вы поместите этот фрагмент в функцию, вы также можете принять параметр int, преобразовать его в std :: string и вернуть std :: string, как показали другие.

Ответ №2

Вам нужно объявить возвращаемый тип функции как std::string а затем вернуть либо строковый объект, то, что можно неявно преобразовать в строковый объект или что-то, что явно создает объект string.

Пример:

std::string foo(){ return «idkfa»; //return C-style string -> implicitly convertible to string return {«idkfa»}; // direct initialization of returning std::string return std::string(«idkfa»); //return explicitly constructed std::string object }

Также обратите внимание, что строки в стиле C имеют тип char* (строки в стиле C – это в основном массив chars, причем последний элемент равен , то есть 0).

Ответ №3

Ваш код работает отлично, хотя system(«pause») полностью избыточна и бессмысленна и должна быть удалена. На самом деле это может ввести вас в замешательство.

Оцените статью
Добавить комментарий