2014-02-17 21 views
0
int value = rand() % 1000; 

string filelocation = "C:/Users/Admin/Documents/textfile" 

string textfile = ".txt"; 

如何可以一起添加这些并存储到另一个字符串变量C++:如何我的整数添加到字符串

例如

string test = "C:/Users/Admin/Documents/textfile123.txt" 

这样我就能在每次创建一个唯一命名的文本文件中的代码是通过运行:

outfile.open(test, std::ios::app); 

香港专业教育学院的尝试:

outfile.open("C:/Users/admin/Documents/textfile" + value + ".txt", std::ios::app); 

,但我得到的错误'+' : cannot add two pointers

回答

1

你可以使用std :: stringstream。尝试类似这样的

int value = rand() % 1000; 
string filelocation = "C:/Users/Admin/Documents/textfile" 
string textfile = ".txt"; 

std::stringstream out; 
out << filelocation << value << textfile; 
outfile.open(out.str(), std::ios::app); 
+0

这个编译和运行,但它只能在第一次运行,每次我尝试并在初始运行后运行代码,它不再生成随机文件,它只是打开初始文本文件而不是生成随机文本文件。 任何想法,为什么? 感谢 – user3131101

+0

@ user3131101当您打开它时,您将按照指定的std :: ios :: app追加到该文件。没有看到更多的代码,很难说正在发生什么。 – jpw

0

您可以使用函数snprintf或sprintf。如果使用snprintf,则必须应用anoth呃字符串来保存你的“C:/ Users/Admin/Documents/textfile”。 例如: sprintf(): sprintf(str,“c:\ xxx \%d”,%d);

0

如上所述,您需要将value转换为字符串后才能使用。现在,您正试图将一个二进制值添加到字符串中。查找stringstream以帮助您了解从intstring的转换。

2

使用std :: to_string()函数将值转换为字符串。 您必须做outfile.open("C:/Users/admin/Documents/textfile" + std::to_string(value) + ".txt", std::ios::app);