std::getline() 访问冲突,以前可以工作,但现在无法从任何文件中读取

std::getline() access violation, used to work but can't read from any file now

本文关键字:任何 读取 文件 工作 getline 访问冲突 std      更新时间:2023-10-16

我有一个C++应用程序需要从.txt文件中读取数据。我已经让这个应用程序工作了大约 8-9 个月,但在更改应用程序的另一部分后,它在对 getline() 的任何调用中都出现"访问冲突"错误。

这是我的代码:

std::string line;
std::ifstream config;
config.open(fileName);
if(config.is_open()) {
    while(config.good())
    {
        std::getline(config, line);
        //Other code to do stuff with the string "line".
    }

我不知道为什么现在会发生这种情况,会不会与某处的某个 std 库 dll 有关?

我完全不知所措。

作为快速修复,是否有另一种简单的方法可以逐行读取文件,这可能会绕过此问题?

谢谢。

哦,这是错误消息:

0xC0000005:访问违规写入位置0x00000014。

这不是您问题的答案,而是一般的回答。

不要从 cplusplus.com 复制fstream代码,您的示例应该是:

std::string line;
std::ifstream config(fileName);
while (std::getline(config, line))
{
    //Other code to do stuff with the string "line".
}

请确保替换链接器中的所有调试 .lib,并将其替换为发布版本 如果您将视觉C++用于发布版本。

例如:属性 -> 链接器 -> 输入 -> 其他依赖项(替换 msvcrt.lib(最后一个字符"d"表示调试库)从 msvcrt.lib(发布))