字符串 C++ 中的递增数字

Increment number in string C++

我正在尝试根据与文件名关联的数字递增文件名。如果我将变量 postFix 设为 int 类型,它会给出错误(可以理解),因为我无法将 int 连接到字符串类型。

在那种情况下,我该如何递增字符串变量?

for (int i = 0; i <= 10; i++) 
{
  std::string postFix = "1"; // int postFix = 1 gives an error
  std::cout << (std::string("Image" + postFix + std::string(".png")));
}
int value = atoi(postFix.c_str());
value++;
postFix = std::to_string(value);

使用std::to_string

for (int i = 0; i <= 10; i++) 
{
    int postFix = 1;
    std::cout << (std::string("Image" + std::to_string(postFix) + std::string(".png")));
}

您可以使用 std::to_string 从您的 int 值创建一个 std::string

for (int i = 0; i <= 10; i++) 
{
    std::cout << "Image" + std::to_string(i+1) + ".png";
}

尽管在这种情况下您也可以只使用流 operator<<

for (int i = 0; i <= 10; i++) 
{
    std::cout << "Image" << i+1 << ".png";
}

你没有;您使用一个整数变量,并用它的字符串表示来构建文件名:std::to_string(n)

根据您的意愿增加 int 'Number',然后将其转换为字符串,最后附加文件名(或您想要的位置)。

Headers 需要:

#include <iomanip>
#include <locale>
#include <sstream>
#include <string> // this should be already included in <sstream>

要将 'Number' 转换为 'String',请执行以下操作:

int Number = 123;       // number to be converted to a string

string Result;          // string which will contain the result

ostringstream convert;   // stream used for the conversion

convert << Number;      // insert the textual representation of 'Number' in the characters in the stream

Result = convert.str(); // set 'Result' to the contents of the stream

          // 'Result' now is equal to "123" 

此操作可以缩短为一行:

int Number = 123;
string String = static_cast<ostringstream*>( &(ostringstream() << Number) )->str();

引用自 here

写简单

std::cout << std::string("Image" ) + std::to_string( i + 1 ) + ".png";

甚至喜欢

std::cout << "Image" + std::to_string( i + 1 ) + ".png";

或者你可以先定义一个字符串

std:;string = "Image" + std::to_string( i + 1 ) + ".png";

然后输出

std::cout << s;

看来你把它弄得比必要的更复杂了。

for (int i = 1; i <= 10; i++) {
     std::cout << "Image" << i << ".png";
   }

for (int i = 1; i  <= 10; i++) {
    std::string filename = "Image" + std::to_string(i) + ".png";
    // do something with filename
}

to_string(int)出现在C++11中。