xcode — C ++, как добавить больше строк в метод

Я работаю в Java с тех пор, как начал программировать и решил изучать c ++.
То, что я написал на Java, выглядело так:

showMessage("Hello world" + randomNumber);

И он показал текст + целое число или число с плавающей запятой или что-то еще. Но это не будет работать в C ++.
Сообщение об ошибке от xCode: Invalid operands to binary expression ('const char *' and 'float')

Ура!

1

Решение

Вы можете сделать sprintf по словам Антона, или быть более c++:

std::stringstream ss;
ss << "Hello, world " << randomNumber;
showmessage(ss.str());

(нет ничего плохого в sprintf, особенно если вы используете snprintf вместо).

2

Другие решения

    ostringstream os;
os<<"HelloWorld"<<randomnumber;
string s;
s = os.str();

Строка s теперь содержит строку, которую вы хотите в качестве строкового объекта.

1

Также вы можете использовать повышение :: lexical_cast преобразовать числа в строки, что в большинстве случаев является самым быстрым методом:

showMessage("Hello world" + boost::lexical_cast<std::string>(randomNumber));

объявление showMessage

void showMessage(cosnt std::string& message)
1

Попробуйте добавить новую функцию, которая может конвертировать несколько типов в std :: string:

template<typename ty>
string to_str(ty t)
{
stringstream ss; ss << t;
return ss.str();
}

Использование:

"Hello World " + to_str(123)
1

Определить класс S, Затем написать

showMessage( S() << "Hello world" << randomNumber );

Я закодировал S Класс слишком много раз для SO, и это хорошее упражнение для его создания, следовательно, не предоставляя исходный код.

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

0

Я не уверен, что ответ в стиле c подходит, но я уже отвечал на вопрос cocos2d-x.

Попытка настроить CCLabelTTF с целым числом как частью его строки в Cocos2d-X C ++

0

С С ++ 11:

showMessage("Hello world" + std::to_string(randomNumber));
0

вместо этого вы должны печатать в char *.

Вы могли бы сделать что-то вроде

char* tempBuffer = new char[256];

sprintf_s(tempBuffer, 256, "Hello world %d", randomNumber);

showMessage(tempBuffer);
-1
По вопросам рекламы [email protected]