我正在尝试创建一个为我创建文件夹并使用数字组合命名的功能。这是我为该函数编写的代码:

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)?以及如何才能获得想要的正确结果?

最佳答案

std::ostringstream::str()


(1) string str() const;

(2) void str (const string& s);

  
  第一种形式(1)返回带有流当前内容副本的字符串对象。
  
  第二种形式(2)将s设置为流的内容,丢弃任何先前的内容。


要清理缓冲区,请同时使用第二个重载:

xString = ssObject.str();
ssObject.str("");
//           ^^

09-29 23:24