字符串 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中。
我正在尝试根据与文件名关联的数字递增文件名。如果我将变量 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中。