gpt4 book ai didi

c++ - g++ 的 ifstream 错误,但使用 Visual Studio 编译

转载 作者:太空狗 更新时间:2023-10-29 20:16:10 24 4
gpt4 key购买 nike

我一直在为我正在处理的项目使用 Visual Studio,尽管它还必须在 Linux 上使用 GCC 进行编译。我已经完成了我的项目并且它运行良好,但是我将文件发送到我的 Linux shell 并且我收到了一个带有简单代码行的错误:

std::ifstream input(s);

这让我出错,说没有匹配的功能。顺便说一下,s 是一个 std::string。谁能告诉我为什么它在 Visual Studio 而不是 GCC 下运行,即使我正在查看 ifstream 的文档?也许是旧版本的 GCC?

编辑:GCC 版本是 4.2.1 确切的错误是:

error: no matching function for call to 'std::basic_ifstream<char,  
std::char_traits<char>>::basic_ifstream(std::string&)'

编辑 2: 相关代码:

std::string s = "";
if(argc == 2)
s = argv[1];
else{
std::cout << "Bad filename?" << std::endl;
return 1;
}
std::ifstream input(s);

最佳答案

下载最新版本的 GCC,并使用 -std=c++0x 选项编译您的程序。在 C++11 中,流类具有以 std::string 作为参数的构造函数,而 GCC 默认不启用 C++11,因此您需要通过提供 - std=c++0x 编译器选项。

如果你不能使用 C++11,那么这样做:

std::ifstream input(s.c_str());

这应该可以在 C++03 和 C++11 中编译。

关于c++ - g++ 的 ifstream 错误,但使用 Visual Studio 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com