Эта статья от perfectionkills.com , вероятно, даст вам некоторое представление о том, как это делается, и почему вы не должны делать это.
(Кстати, jQuery не расширяет DOM-элементы. Вместо этого они используют оболочки DOM.)
В C++ 11 можно использовать std::to_string
:
#include <string>
std::string s = std::to_string(5);
, Если Вы работаете с до C++ 11, Вы могли бы использовать потоки C++:
#include <sstream>
int i = 5;
std::string s;
std::stringstream out;
out << i;
s = out.str();
Взятый от http://notfaq.wordpress.com/2006/08/30/c-convert-int-to-string/
Большинство вышеупомянутых предложений технически не является C++, они - решения C.
Изучают использование станд.:: stringstream.
Выделите строку достаточной длины, затем используйте snprintf.
На полученных платформах Windows CE нет никаких iostream
с по умолчанию. Способ пойти существует preferaby с _itoa<>
семья, обычно _itow<>
(так как большая часть строкового материала является Unicode там так или иначе).
Негласно, lexical_cast делает это:
std::stringstream str;
str << myint;
std::string result;
str >> result;
, Если Вы не хотите "притягивать" повышение для этого, затем с помощью вышеупомянутого, хорошее решение.
itoa был нестандартной функцией помощника, разработанной для дополнения atoi стандартной функции, и вероятно сокрытие sprintf (Большинство его опций может быть реализовано с точки зрения sprintf): http://www.cplusplus.com/reference/clibrary/cstdlib/itoa.html
Использование sprintf. Или snprintf. Или безотносительно инструмента Вы находите.
Несмотря на факт некоторые функции не находятся в стандарте, как справедливо упомянуто "onebyone" в одном из его комментариев, большая часть компилятора предложит Вам альтернативу (например, Visual C++ имеет свой собственный _snprintf, Вы можете определение типа к snprintf при необходимости в нем).
Использование потоки C++ (в текущем станд. случая:: stringstream (или даже станд. устаревший:: strstream, как предложено Herb Sutter в одной из его книг, потому что это несколько быстрее).
Вы находитесь в C++, что означает, что можно выбрать способ, которым Вы хотите его:
более быстрый путь (т.е. путь C), но необходимо быть уверены, что код является узким местом в приложении (преждевременная оптимизация является злой, и т.д.), и что код безопасно инкапсулируется, чтобы не рисковать переполнением буфера.
более безопасный путь (т.е. C++ путь), если Вы знаете, эта часть кода не очень важна, так лучше быть уверенной, что эта часть кода не повредит наугад моменты, потому что кто-то перепутал размер или указатель (который происходит в реальной жизни, как... вчера, на моем компьютере, потому что кто-то думал, что это "охлаждается" для использования более быстрого пути, действительно не нуждаясь в нем).
Попробуйте sprintf ():
char str[12];
int num = 3;
sprintf(str, "%d", num); // str now contains "3"
sprintf () похож на printf (), но выводы к строке.
кроме того, как Parappa упомянул в комментариях, Вы могли бы хотеть использовать snprintf (), чтобы мешать переполнению буфера произойти (где число, которое Вы преобразовываете, не соответствует размеру Вашей строки.) Это работает как это:
snprintf(str, sizeof(str), "%d", num);
повышение:: lexical_cast работает вполне прилично.
#include <boost/lexical_cast.hpp>
int main(int argc, char** argv) {
std::string foo = boost::lexical_cast<std::string>(argc);
}
Обратите внимание, что все из эти stringstream
методы могут включать блокировку вокруг использования объекта языкового стандарта для форматирования. Это может быть чем-то, чтобы опасаться при использовании этого преобразования из нескольких потоков...
Посмотрите здесь для больше. Преобразовывают число в строку с указанной длиной в C++
svn import
работы с единственным файлом. svn import file.txt http://svn.example.com/repo/trunk/file.txt
– Alex Jasmin
22 October 2010 в 20:19
Попробуйте Boost.Format или FastFormat , обе высококачественные библиотеки C ++:
int i = 10;
std::string result;
WIth Boost.Format
result = str(boost::format("%1%", i));
или FastFormat
fastformat::fmt(result, "{0}", i);
fastformat::write(result, i);
Очевидно, что они оба делают гораздо больше, чем простое преобразование одного целого числа
Фактически вы можете преобразовать что угодно в строку с помощью одной грамотно написанной функции-шаблона. В этом примере кода используется цикл для создания подкаталогов в системе Win-32. Оператор конкатенации строк, operator +, используется для конкатенации корня с суффиксом для генерации имен каталогов. Суффикс создается путем преобразования переменной управления циклом i в строку C ++ с использованием функции шаблона и объединения ее с другой строкой.
//Mark Renslow, Globe University, Minnesota School of Business, Utah Career College
//C++ instructor and Network Dean of Information Technology
#include <cstdlib>
#include <iostream>
#include <string>
#include <sstream> // string stream
#include <direct.h>
using namespace std;
string intToString(int x)
{
/**************************************/
/* This function is similar to itoa() */
/* "integer to alpha", a non-standard */
/* C language function. It takes an */
/* integer as input and as output, */
/* returns a C++ string. */
/* itoa() returned a C-string (null- */
/* terminated) */
/* This function is not needed because*/
/* the following template function */
/* does it all */
/**************************************/
string r;
stringstream s;
s << x;
r = s.str();
return r;
}
template <class T>
string toString( T argument)
{
/**************************************/
/* This template shows the power of */
/* C++ templates. This function will */
/* convert anything to a string! */
/* Precondition: */
/* operator<< is defined for type T */
/**************************************/
string r;
stringstream s;
s << argument;
r = s.str();
return r;
}
int main( )
{
string s;
cout << "What directory would you like me to make?";
cin >> s;
try
{
mkdir(s.c_str());
}
catch (exception& e)
{
cerr << e.what( ) << endl;
}
chdir(s.c_str());
//Using a loop and string concatenation to make several sub-directories
for(int i = 0; i < 10; i++)
{
s = "Dir_";
s = s + toString(i);
mkdir(s.c_str());
}
system("PAUSE");
return EXIT_SUCCESS;
}