2014-02-17 57 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);