字符串C ++中的增量编号

时间:2015-06-12 20:11:57

标签: c++ string int increment

我正在尝试根据与文件名关联的数字来增加文件的名称。如果我将变量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")));
}

7 个答案:

答案 0 :(得分:2)

您可以使用std::to_stringstd::string值创建int

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";
}

答案 1 :(得分:2)

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

答案 2 :(得分:1)

int value = atoi(postFix.c_str());
value++;
postFix = std::to_string(value);

答案 3 :(得分:1)

使用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")));
}

答案 4 :(得分:1)

简单地写

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

甚至喜欢

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

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

std :; string =&#34; Image&#34; + std :: to_string(i + 1)+&#34; .png&#34 ;;

然后输出

std :: cout&lt;&lt; S;

答案 5 :(得分:1)

看起来你的情况比必要的要复杂得多。

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中。

答案 6 :(得分:0)

增加int&#39;数字&#39;如你所愿,然后将其转换为字符串,最后用文件名(或者你想要的地方)附加它。

需要标题:

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

并转换&#39;数字&#39;到&#39; String&#39;执行以下操作:

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