No matching function for call to 'get line' while exploding
使用此代码时,没有用于调用"getline"的匹配函数:
1 2 3 4 5 6 7 8 9 10 11
| ifstream myfile;
string line;
string line2;
myfile.open("example.txt");
while (! myfile.eof() )
{
getline (myfile, line);
getline (line, line2, '|');
cout<<line2;
} |
在example.txt中,我有如下信息:
1 2
| 1|Name1|21|170
2|Name2|34|168 |
等。。。
我真的很想排队,直到字符…
我尝试了一些分解函数,但它们只是字符串类型,但我需要:
第一是int
第二是焦炭
第3和第4个为浮动。
我想做的事情真的很复杂,我解释不清楚。我希望有人能理解我。
- 我猜第一个参数的getline (line, line2, '|');和std::string不是std::getline的实际版本。
- 我有:使用名称空间std;问题不是:(
- 嗯,我是说没有getline(string, string, char)(我只是喜欢键入std::,讨厌using namespace std;)。用错误信息很容易解释。
- 好。。。STD:STD:STD:爆炸(STD::字符串const and s,char DELM){STD::vector < STD::String >结果;STD::ISTIGISSWISS ISS(S);(STD::String令牌;STD::GETLIN(ISS,令牌,Delm)){结果}返回(STD::移动(令牌));}返回结果;}
- 您的代码中没有显示explode,错误引用getline,除非您有非std版本的getline,否则就是问题所在。问题并不复杂(假设第二部分是指string,而不是char)。这是简单的字符串分析。
- 我不知道,我用的是xcode,我在这里找到了这个函数:link,它可以工作…但我在将字符串转换为char和将字符串从v[0]v[1]转换为float时确实遇到了问题。依此功能…我从5个小时开始就坚持这样:/
getline作为第一个参数接收模板basic语句的实例。字符串不符合该要求。
可以使用Stringstream:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include <sstream>
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
string line;
string line2;
ifstream myfile("test/test.txt");
while (getline(myfile, line))
{
stringstream sline(line);
while (getline(sline, line2, '|'))
cout << line2 << endl;
}
return 0;
} |
- 几乎就是我想要的!我想用这行2把信息插入课堂。所以我需要把它们保存到不同的变量中。但我想我会对if和else做些什么:d
- @尼克斯,我不明白。tou的意思是将信息插入到类中,以及使用if和else。顺便说一下,如果这对你有帮助的话,请不要忘记upvopte。
- 我有:char const*n[100];float c;float w;我应该用:s[++scocount]插入它们。inportstudent(n,c,w);现在我开始使用if-like:cout<
- @nicox为什么不使用字符串来表示n?
- 因为我不能使用返回n;如果它的字符串:(
- 实际上,您已经将n声明为常量,并且必须在声明时对其进行初始化。否则,删除常量修饰符。
- 实际上,我不知道我以前做了什么,但现在我又把它改成了字符串,它起作用了:哦,谢谢你的帮助!:)