【发布时间】:2016-07-15 22:43:32
【问题描述】:
我有一个 for 循环(如下),它应该使用 wofstream 将几个字符串输出到多个文件。不幸的是,它会创建文件但不会将字符串输出到文件中。文件总是空的。我已经浏览了很多类似的问题,但没有运气。任何帮助将不胜感激。我在使用 Visual Studio 2015 编写 UWP 应用的 Windows 10 机器上。
for (size_t k=0;k < vctSchedulesToReturn.size();k++)
{
auto platformPath = Windows::Storage::ApplicationData::Current->RoamingFolder->Path;
std::wstring wstrplatformPath = platformPath->Data();
std::wstring wstrPlatformPathAndFilename = wstrplatformPath + L"\\" + availabilityData.month + L"_" + std::to_wstring(availabilityData.year) + L"_" + std::to_wstring(k) + L"_" + L"AlertScheduleOut.csv";
std::string convertedPlatformPathandFilename(wstrPlatformPathAndFilename.begin(), wstrPlatformPathAndFilename.end());
std::wofstream outFile(convertedPlatformPathandFilename);
outFile.open(convertedPlatformPathandFilename);
std::vector<std::pair<wstring, wstring>>::iterator pairItr;
std::wstring strScheduleOutputString = L"";
for (pairItr = vctSchedulesToReturn[k].second.begin(); pairItr!=vctSchedulesToReturn[k].second.end(); pairItr++)
{
strScheduleOutputString += pairItr->first + L",";
}
strScheduleOutputString += L"\r\n";
for (pairItr = vctSchedulesToReturn[k].second.begin(); pairItr != vctSchedulesToReturn[k].second.end(); pairItr++)
{
strScheduleOutputString += pairItr->second + L",";
}
outFile << strScheduleOutputString;
outFile.flush();
outFile.close();
}
【问题讨论】:
-
你试过
outFile << "Hello World";只是为了检查发生了什么? -
旁白:你为什么要构造一个字符串并将字符串写入
outFile,而不是仅仅写入outFile? -
另外,您通过什么方式确定文件为空?我见过几次这样做是错误的。
-
请发布MCVE,这样人们就不必猜测
vctSchedulesToReturn中的实际内容。 -
赫尔基尔感谢您的帮助。字符串构造只是我故障排除的产物,但我不认为它会伤害任何东西,所以我就这样离开了。
标签: c++ visual-studio uwp ofstream wofstream