C++相当于.ToString()

Ste*_*ins 0 c++ arrays string for-loop

必须有一个简单的方法来做到这一点......

// C# code
    for (int i = 0; i < 20; i++)
        doSomething(i.ToString() + "_file.bmp");
Run Code Online (Sandbox Code Playgroud)

我试图用C++做这件事,但事实证明,最简单的事情是用这种语言最难做到的.主要是因为有一个问题:我被限制在一个只接受char*函数参数的库中,这个函数最终会被终结,所以我几乎不再使用char数组了.这是我到目前为止:

char* path[12];
for(int i = 0; i < 20; i++)
{
    sprintf(path[0],"%i_Card.bmp",i);
    cards[i] = new Card(i,path[0]);
}
Run Code Online (Sandbox Code Playgroud)

问题是,这种方法最终导致了一个大而长的无用字符串.

我必须透露这是针对学校作业的,但回答这个问题不会决定我的成绩,它只会使应用程序的一个方面更容易一些.

K-b*_*llo 6

与ToString相当的C++ 03是

std::stringstream stream;
stream << i;
std::string i_as_string = stream.str();
Run Code Online (Sandbox Code Playgroud)

请注意,您也可以实现这个目标,没有中间变量,通过做( std::stringstream() << i ).str().

在C++ 11中,有两种方法std::lexical_cast< std::string >( i )可以为您完成上述操作(也可以从Boost获得),以及std::to_string( i ).


qwe*_*ymk 5

试试这个

#include <stdio.h>
#include <stdlib.h>

itoa(i)
Run Code Online (Sandbox Code Playgroud)

atoi


或者你可以走条路:

#include <sstream>

int i = 5;
std::string s;
std::stringstream out;
out << i;
s = out.str();
Run Code Online (Sandbox Code Playgroud)