- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
美好的一天,
我在 C++ 中尝试新事物,我发现 Visual Studio 中的调试和发布配置给我不同的结果。
#include <experimental/generator>
#include <fstream>
#include <functional>
#include <iostream>
#include <string>
#include <vector>
template <typename T = std::string>
auto getLineByLine(std::string filename, std::function<T(std::string&)> func = [](std::string& var) { return var; })
{
std::ifstream infile(filename);
std::string line;
while (getline(infile, line))
{
yield func(line);
}
}
int main()
{
std::vector<std::string> myVector;
for (const auto& line : getLineByLine("fileWithMoreThanOneLine.txt"))
{
myVector.push_back(line);
}
std::cout << myVector[0] << std::endl;
}
Debug 中的这段代码按预期输出 - 文件 fileWithMoreThanOneLine.txt 中的一行。
但在 Release 中,当我在 vector 中打印第一个字符串时,它在最后一行崩溃。
当我尝试调试它时,我发现变量 myVector 被“优化掉并且不可用”。在发布。我认为这不是正确的优化。
我还发现,如果我将一行更改为:for (const auto& line : getLineByLine("fileWithMoreThanOneLine.txt", [&myVector](std::string& var) { return var; }))
它编译正确。但是 lambda 函数不需要变量 myVector,对吧?
这是我的代码或 MSVC 编译器的问题吗?我尝试了 VS 2015 Update 1(第一个带有协程的 VS)和 VS“15”以及每日构建的 VC++。
谢谢你,
米罗斯拉夫·赫恩奇日
附言很抱歉我的英语不好,如果这是个愚蠢的问题。
最佳答案
听起来像是你的文件路径有问题......你可能无法读取文件,导致 vector 未被填充,然后 vector [0] 超出范围。
VS 将发布版本和调试版本放在不同的目录中,这意味着您在使用调试版本运行时打开的文件不存在于您使用的相同相对路径中。
尝试用完整路径更新它,然后看看会发生什么
关于c++ - MSVC++ 错误代码或协同程序编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39870961/
我想插入 备注 关于要在我的 latex 文档的特定位置进行的修复 也许有一个 列表的“待办事项/修复我” 你怎么处理这个? 似乎一种方法是使用 fixme 包,但我无法使其工作。 有人在用吗? 最佳
错误:无法创建表。我已经创建了一个数据库,并且已经提供了所有特权。但仍然无法登录协作模块。我受够了,但我不想放弃。我已经尝试了所有可能的方法,但都行不通。 Stackoverflow 是我所知道的最好
我是一名优秀的程序员,十分优秀!