我正在尝试创建一个为我创建文件夹并使用数字组合命名的功能。这是我为该函数编写的代码:
void folderMaker(int xCount, int yCount)
{
stringstream ssObject;
string xString;
string yString;
for (int x = 0; x<xCount; x++)
{
for (int y = 0; y<yCount; y++)
{
ssObject << x;
xString = ssObject.str();
ssObject << y;
yString = ssObject.str();
string nameAndLocation = "C:\\User\\DestinationFolder\\" + xString + "and" + yString;
CreateDirectory (nameAndLocation.c_str(), NULL);
}
}
}
我想使两个“ for”循环为x和y变量赋予某些值。在这里,我想使用名称中包含的两个变量创建新文件夹的名称。因此,我使用了我创建的ssObject。结果是实际上我确实创建了我想要的文件夹,但是名称不是我想要的名称。例如,如果xCount = 3且yCount = 1,则得到以下文件夹名称:
第一个文件夹的名称:x0andy00
第二个文件夹的名称:x001andy0010
第三个文件夹的名称:x00102andy001020
为什么要获得这些名称(在xCount = 3和yCount = 1的情况下代替x0andy0,x1andy0和x2andy0)?以及如何才能获得想要的正确结果?
最佳答案
(1) string str() const;
(2) void str (const string& s);
第一种形式(1)返回带有流当前内容副本的字符串对象。
第二种形式(2)将s设置为流的内容,丢弃任何先前的内容。
要清理缓冲区,请同时使用第二个重载:
xString = ssObject.str();
ssObject.str("");
// ^^