没有用于调用“std::basic_ifstream<char>::basic_ifstream(QString&)”的匹配函数
no matching function for call to ‘std::basic_ifstream<char>::basic_ifstream(QString&)’
这是我第一次使用QString,我不知道如何解决这个错误:
Personanetscape.cpp:16: 错误:没有匹配函数来调用‘std::basic_ifstream::basic_ifstream(QString&)’
这是我的.h
#include <iostream>
#include <fstream>
#include <string>
#include <qstring.h>
#include <qmap.h>
typedef QMap<QString, QString> Map;
class PersonaNetscape
{
private:
std::ifstream fileIn;
Map map;
public:
PersonaNetscape(QString nameFileIn);
~PersonaNetscape();
bool personIn();
QString search(QString field);
};
这是我的.cpp
#include "Personanetscape.h"
PersonaNetscape::PersonaNetscape(QString nameFileIn)
: fileIn(nameFileIn) //this is line 16 in my code
{
if(!fileIn)
throw nameFileIn;
}
我该如何解决这个问题?
谢谢。
使用 QFile 而不是 std::ifstream。
我最初更喜欢 QFile 而不是 std::ifstream 的原因是,一般来说,如果我正在编写使用 QString(或其他 Qt 框架 class)的代码,并且还有其他 Qt 框架 classes 实现了我正在尝试做的事情(在本例中为 QFile),我更喜欢它,因为它会更容易,而且我不必担心转换 types/weird边缘情况。
Scheff 在使用我完全忽略的 QStrings 时添加了一个更喜欢 QFile 的重要理由。他说:
std::string is actually encoding agnostic where QString provides methods to convert to and from various encodings, and the internal handling of strings in Qt is done with a well-defined encoding. Hence, the usage of QFile will prepare the application for better handling of encoding and locale stuff than "the hack" with .toStdString().c_str().
这是我第一次使用QString,我不知道如何解决这个错误:
Personanetscape.cpp:16: 错误:没有匹配函数来调用‘std::basic_ifstream::basic_ifstream(QString&)’
这是我的.h
#include <iostream>
#include <fstream>
#include <string>
#include <qstring.h>
#include <qmap.h>
typedef QMap<QString, QString> Map;
class PersonaNetscape
{
private:
std::ifstream fileIn;
Map map;
public:
PersonaNetscape(QString nameFileIn);
~PersonaNetscape();
bool personIn();
QString search(QString field);
};
这是我的.cpp
#include "Personanetscape.h"
PersonaNetscape::PersonaNetscape(QString nameFileIn)
: fileIn(nameFileIn) //this is line 16 in my code
{
if(!fileIn)
throw nameFileIn;
}
我该如何解决这个问题?
谢谢。
使用 QFile 而不是 std::ifstream。
我最初更喜欢 QFile 而不是 std::ifstream 的原因是,一般来说,如果我正在编写使用 QString(或其他 Qt 框架 class)的代码,并且还有其他 Qt 框架 classes 实现了我正在尝试做的事情(在本例中为 QFile),我更喜欢它,因为它会更容易,而且我不必担心转换 types/weird边缘情况。
Scheff 在使用我完全忽略的 QStrings 时添加了一个更喜欢 QFile 的重要理由。他说:
std::string is actually encoding agnostic where QString provides methods to convert to and from various encodings, and the internal handling of strings in Qt is done with a well-defined encoding. Hence, the usage of QFile will prepare the application for better handling of encoding and locale stuff than "the hack" with .toStdString().c_str().