使用getline获取字符串对象 我试图从控制台直接使用GETLIN将用户输入到C++字符串对象中。但是,我没有这样做,因为编译器给了我以下错误 main.cpp: In function ‘int main(int, char**)’: main.cpp:52:28: error: no matching function for call to ‘std::basic_ifstream<char>::getline(std::ifstream&, std::string&)’ main.cpp:52:28: note: candidates are: /usr/include/c++/4.6/istream:599:5: note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::getline(std::basic_istream<_CharT, _Traits>::char_type*, std::streamsize, std::basic_istream<_CharT, _Traits>::char_type) [with _CharT = char, _Traits = std::char_traits<char>, std::basic_istream<_CharT, _Traits>::char_type = char, std::streamsize = int] /usr/include/c++/4.6/istream:599:5: note: candidate expects 3 arguments, 2 provided /usr/include/c++/4.6/istream:408:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::getline(std::basic_istream<_CharT, _Traits>::char_type*, std::streamsize) [with _CharT = char, _Traits = std::char_traits<char>, std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>, std::basic_istream<_CharT, _Traits>::char_type = char, std::streamsize = int] /usr/include/c++/4.6/istream:408:7: note: no known conversion for argument 2 from ‘std::string {aka std::basic_string<char>}’ to ‘int’ main.cpp:在函数“int main(int,char**)”中: main.cpp:52:28:错误:调用“std::basic\u ifstream::getline(std::ifstream&,std::string&)”时没有匹配的函数 main.cpp:52:28:注:候选人为: /usr/include/c++/4.6/istream:599:5:注:std::basic_-istream&std::basic_-istream::getline(std::basic_-istream::char-type*,std::streamsize,std::basic_-istream::char-type)[带_-CharT=char,_-traitracts=std::basic_-istream::char-type=char-type=char,std::streamsize=int] /usr/include/c++/4.6/istream:599:5:注意:候选者需要3个参数,提供2个 /usr/include/c++/4.6/istream:408:7:注:std::basic\u istream:::\u istream类型&std::basic\u istream::getline(std::basic\u istream::char\u type*,std::streamsize)[带_CharT=char,_Traits=std::char\u Traits,std::basic\u istream::::\u istream类型=std::basic\u istream=std::char\u type=char,std::streamsize=int] /usr/include/c++/4.6/istream:408:7:注意:参数2从'std::string{aka std::basic_string}'到'int'没有已知的转换

使用getline获取字符串对象 我试图从控制台直接使用GETLIN将用户输入到C++字符串对象中。但是,我没有这样做,因为编译器给了我以下错误 main.cpp: In function ‘int main(int, char**)’: main.cpp:52:28: error: no matching function for call to ‘std::basic_ifstream<char>::getline(std::ifstream&, std::string&)’ main.cpp:52:28: note: candidates are: /usr/include/c++/4.6/istream:599:5: note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::getline(std::basic_istream<_CharT, _Traits>::char_type*, std::streamsize, std::basic_istream<_CharT, _Traits>::char_type) [with _CharT = char, _Traits = std::char_traits<char>, std::basic_istream<_CharT, _Traits>::char_type = char, std::streamsize = int] /usr/include/c++/4.6/istream:599:5: note: candidate expects 3 arguments, 2 provided /usr/include/c++/4.6/istream:408:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::getline(std::basic_istream<_CharT, _Traits>::char_type*, std::streamsize) [with _CharT = char, _Traits = std::char_traits<char>, std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>, std::basic_istream<_CharT, _Traits>::char_type = char, std::streamsize = int] /usr/include/c++/4.6/istream:408:7: note: no known conversion for argument 2 from ‘std::string {aka std::basic_string<char>}’ to ‘int’ main.cpp:在函数“int main(int,char**)”中: main.cpp:52:28:错误:调用“std::basic\u ifstream::getline(std::ifstream&,std::string&)”时没有匹配的函数 main.cpp:52:28:注:候选人为: /usr/include/c++/4.6/istream:599:5:注:std::basic_-istream&std::basic_-istream::getline(std::basic_-istream::char-type*,std::streamsize,std::basic_-istream::char-type)[带_-CharT=char,_-traitracts=std::basic_-istream::char-type=char-type=char,std::streamsize=int] /usr/include/c++/4.6/istream:599:5:注意:候选者需要3个参数,提供2个 /usr/include/c++/4.6/istream:408:7:注:std::basic\u istream:::\u istream类型&std::basic\u istream::getline(std::basic\u istream::char\u type*,std::streamsize)[带_CharT=char,_Traits=std::char\u Traits,std::basic\u istream::::\u istream类型=std::basic\u istream=std::char\u type=char,std::streamsize=int] /usr/include/c++/4.6/istream:408:7:注意:参数2从'std::string{aka std::basic_string}'到'int'没有已知的转换,c++,string,getline,C++,String,Getline,以下是源代码: #include <iostream> #include <fstream> #include <cmath> #include <cstdlib> #include <cstring> #include <string> #include <map> #include <set> #include <algorithm> #include <cst

以下是源代码:

#include <iostream>
 #include <fstream>
 #include <cmath>
 #include <cstdlib>
 #include <cstring>
 #include <string>
 #include <map>
 #include <set>
 #include <algorithm>
 #include <cstdio>

 #define MAX_LIN 1024

 using namespace std;

 typedef set<int> si;
int main(int argc, char** argv)
 {   
     string line1;
     string line2;

     map <string , si > iMap;

     if (argc != 3) { 
         fprintf(stderr,"Usage: a.out <file1> <file2>\n");
     }

     ifstream f1,f2;

     f1.open(argv[1],ifstream::in);
     f2.open(argv[2],ifstream::in);

     while(!f1.eof()) {
         getline(f1,line1);
         mParse(line1);
     }   

     while(!f2.eof()) {
         f2.getline(f2,line2);
         mParse(line2);
     }   

     f1.close();
     f2.close();


     return 0;
 }   
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#定义MAX_LIN 1024
使用名称空间std;
排字机si;
int main(int argc,字符**argv)
{   
字符串行1;
弦线2;
地图iMap;
如果(argc!=3){
fprintf(stderr,“用法:a.out\n”);
}
iff1,f2;
f1.打开(argv[1],ifstream::in);
f2.打开(argv[2],ifstream::in);
而(!f1.eof()){
getline(f1,line1);
mParse(第1行);
}   
而(!f2.eof()){
f2.getline(f2,第2行);
mParse(第2行);
}   
f1.关闭();
f2.关闭();
返回0;
}   
这就是原因:

f2.getline(f2,line2);
应该是:

getline(f2,line2);
有一种方法,但它接受不同的论点

注意
while
循环的结构不正确,因为读取操作后应立即检查
eof()
。对循环进行编码的常用方法是:

while (getline(f2, line2))
{
    mParse(line2);
}
这就是原因:

f2.getline(f2,line2);
应该是:

getline(f2,line2);
有一种方法,但它接受不同的论点

注意
while
循环的结构不正确,因为读取操作后应立即检查
eof()
。对循环进行编码的常用方法是:

while (getline(f2, line2))
{
    mParse(line2);
}

以下是规范的方法:

 std::ifstream f1(argv[1]);
 std::ifstream f2(argv[2]);

 for (std::string line; std::getline(f1, line); )
 {
     mparse(line);
 }

 for (std::string line; std::getline(f2, line); )
 {
     mparse(line);
 }

请注意我们没有写的所有内容,每一项都应该被视为大写的sin:
eof
open
close
ifstream::in
返回0
以下是标准方法:

 std::ifstream f1(argv[1]);
 std::ifstream f2(argv[2]);

 for (std::string line; std::getline(f1, line); )
 {
     mparse(line);
 }

 for (std::string line; std::getline(f2, line); )
 {
     mparse(line);
 }

请注意我们没有写的所有内容,每一项都应该被视为大写的sin:
eof
打开
关闭
ifstream::in
返回0
是否包含
?请将您的include指令添加到发布的代码中,我看不到任何指令。您是否在标题中执行了
#include
?是的,我两者都执行了。让我包括全部标题。@humanitarian0098:学习阅读编译器消息是个好主意。他们并不总是最漂亮的,但毕竟我们每天都要和他们打交道
std::basic\u ifstream::getline(std::ifstream&,std::string&)
也可以被视为
std::ifstream::getline(std::ifstream&,std::string&)
,这是猜测您试图调用的编译器。请注意它是如何表示的:1/您正在调用的是
std::ifstream
方法,2/您将
std::ifstream&
std::string&
作为参数传递。您是否将
包括在内?请将您的include指令添加到发布的代码中,我看不到任何指令。您是否在标题中执行了
#include
?是的,我两者都执行了。让我包括全部标题。@humanitarian0098:学习阅读编译器消息是个好主意。他们并不总是最漂亮的,但毕竟我们每天都要和他们打交道
std::basic\u ifstream::getline(std::ifstream&,std::string&)
也可以被视为
std::ifstream::getline(std::ifstream&,std::string&)
,这是猜测您试图调用的编译器。请注意它是如何指示的:1/您正在调用的是
std::ifstream
方法,2/您将
std::ifstream&
std::string&
作为参数传递。