当我尝试运行此代码源时,而不是创建Attempt1.txt,或Attempt2.txt或Attempt3.txt,它只是创建一个名为Attempt的文件。
string str;
int num_attempts_x_million = 1;
str = "Attempt";
str += num_attempts_x_million;
str += ".txt";
textfile.open(str);
textfile << password << endl;
textfile.close();
答案 0 :(得分:6)
您可能会附加控制字符,而不是常规&#39;字符。当然,这是假设num_attempts_x_million
的类型是int
(或任何整数类型)。
std::string::operator+=
没有int
的重载。相反,它有一个用于char
,因此首先将其转换为char
,然后将其附加。对于低整数值,最终会出现0x0
,0x1
,0x2
等内容,这些内容称为control characters in ASCII。
为了将整数转换为字符串,您必须使用std::to_string
。
答案 1 :(得分:2)
str = "Attempt";
str += std::to_string(num_attempts_x_million);
str += ".txt";
textfile.open(str);
textfile << password << endl;
textfile.close();