【问题标题】:No instance of overloaded function for getlinegetline 没有重载函数的实例
【发布时间】:2017-03-01 00:21:36
【问题描述】:

我想从 txt 文件中读取 wstring。 我将文件名存储在一个名为SourceFileName 的变量中,它是wstring 变量。在txt文件中,有如下字符串:

112:abc
221:ghj
....

现在我想将这些数字及其对应的字符串从 txt 文件读入 wstring 字符串,但是当我尝试这样做时,VS 通知我没有 std::getline macthes 参数列表的重载函数实例。

std::wifstream map;
map.open(SourceFileName.c_str());

std::wstring fileID;
std::wstring fileName;

std::getline(map, fileID, L":");//error happens here.

如何解决? 我也试过std::getline(map, fileID, ":");,也没有用。

【问题讨论】:

  • 确切的错误是什么?魔鬼在细节中。
  • 编译器没有建议任何重载候选者吗?
  • std::getline(map, fileID, L':'); 分隔符是字符,不是字符串。

标签: c++ string iostream


【解决方案1】:

没有std::getline 的重载可以接受字符串文字作为第三个参数。拥有它的两个重载都要求分隔符是一个字符:

std::getline(map, fileID, L':');

提示:当编译器找不到匹配的重载时,查看重载接受的参数类型会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2013-11-17
    • 1970-01-01
    • 2016-03-16
    • 2014-12-27
    • 1970-01-01
    相关资源
    最近更新 更多