错误:调用"std::basic_ifstream<char>::basic_ifstream(std::__cxx11::字符串&)"没有匹配函数
error: no matching function for call to 'std::basic_ifstream<char>::basic_ifstream(std::__cxx11::string&)'
我正在尝试编写一个程序,该程序打开文件并计数该文件中的空格分隔单词。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
string filepath;
cout << "Enter the file path including the file name:" << endl;
cin >> filepath;
ifstream f(filepath);
int nwords = 0;
string word;
while (f >> word)
++nwords;
cout << "Number of words = " << nwords << endl;
}
这是我尝试编译时的错误。
g++ Assignment1.cpp
Assignment1.cpp: In function 'int main()':
Assignment1.cpp:10:21: error: no matching function for call to 'std::basic_ifstream<char>::basic_ifstream(std::__cxx11::string&)'
ifstream f(filepath);
^
In file included from Assignment1.cpp:2:0:
c:mingwlibgccmingw325.3.0includec++fstream:495:7: note: candidate: std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const char*, std::ios_base::openmode) [with _CharT = char; _Traits = std::char_traits<char>; std::ios_base::openmode = std::_Ios_Openmode]
basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in)
^
c:mingwlibgccmingw325.3.0includec++fstream:495:7: note: no known conversion for argument 1 from 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}' to 'const char*'
c:mingwlibgccmingw325.3.0includec++fstream:481:7: note: candidate: std::basic_ifstream<_CharT, _Traits>::basic_ifstream() [with _CharT = char; _Traits = std::char_traits<char>]
basic_ifstream() : __istream_type(), _M_filebuf()
^
c:mingwlibgccmingw325.3.0includec++fstream:481:7: note: candidate expects 0 arguments, 1 provided
c:mingwlibgccmingw325.3.0includec++fstream:455:11: note: candidate: std::basic_ifstream<char>::basic_ifstream(const std::basic_ifstream<char>&)
class basic_ifstream : public basic_istream<_CharT, _Traits>
^
c:mingwlibgccmingw325.3.0includec++fstream:455:11: note: no known conversion for argument 1 from 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}' to 'const std::basic_ifstream<char>&'
g++ -std=c++11 Assignment1.cpp
应该工作。问题是多年来C 的标准不同。标准混合在一起。您在编译时间看到的错误中有90%的错误与iOS有关,根据我的经验,与GCC一起编译了,或者标准是错误的。抱歉,我不能确定;我不使用Windows。
filename.append(".txt");
file.open(filename.c_str());
在我的情况下工作
相关文章:
- ifstream什么都没读
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- ifstream文件在从行中读取时被清除
- std::ifstream::read 不会读取所有 512 字节,并设置 EOF 和失败位
- 将 ifstream 拆分为 n 个流?
- 如何将 std::ifstream 转换为 std::basic_istream<CharT, Traits>&?
- 我在 ifstream input_file(文件名)行中收到错误"no matching function to call";
- 尝试打开 ifstream 时出现"Incomplete type"错误
- 这是 basic.def.odr 部分的缺陷吗?
- 是否可以在没有真实文件的情况下创建 ifstream
- 虽然循环不读取整个 ifstream 文件
- std::ifstream 在读取文件中最后一项时设置 eofbit,但仅在读取数值类型时发生
- Ofstream和IFSTREAM有什么区别?
- 如何将QByteArray转换为std::istream或std::ifstream?
- ifstream 跳过数字,只写 0
- C++:std::ofstream 方法 open() 在第二次迭代时擦除打开的 ifstream 文件
- 在函数中声明的 ifStream 对象在发布模式下不起作用
- fstream / ifstream / ofstream 对象如何转换为布尔值
- ifstream 尝试读取 9 到 13 之间的无符号字符时非常奇怪的行为
- 尝试在 C++ 中为 ifstream 提供一个变量