2012-11-15 45 views
-1

充满错误消息:错误:从 '无效' 到非标量类型“的std ::矢量转换<性病:: basic_string的<炭的std :: char_traits请求

error: conversion from 'void' to non-scalar type 'std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >' requested 
1 #include <iostream> 
    2 #include <iomanip> 
    3 #include <fstream> 
    4 #include <vector> 
    5 using namespace std; 
    6 
    7 token parseLine(string s, char i); 
53 int main() 
54 { 
55 string line; 
56 char delim = '|'; 
57 ifstream inputStream("test.txt"); 
58 
59 while(getline(inputStream, line)) 
60 { 
61  vector<string> tokens = parseLine(line, delim); 
62  if(tokens[0][0] != '#') 
63  { 
64   cout << tokens[0]; 
65   cout << tokens[1]; 
66   cout << tokens[2]; 
67  } 
68 } 
69 } 

请原谅8-52线跳过,这是评论“没有工作的东西”。

我不知道如何申报parseLine,什么我尝试的作品:voidintdoublestring等;

任何关于如何声明parseLine的指针,以便它做我想要的?

+5

您可能需要'std :: vector parseLine(string s,char i);',因为这就是您要分配结果的内容。 – chris

+0

'parseLine'返回什么?它在函数中声明的对象又是如何声明的? – jogojapan

+0

第61行提供了大量的信息... – billz

回答

1

parseLine()必须返回vector<string>

vector<string> parseLine(string s, char i); 

是否应该适合线61,但因为你返回一个token它也可能是

vector<token> parseLine(string s, char i); 

你的原意。

+0

我想要做的是以C1 | c3 | c4的形式在输入中读取,然后根据|进行分离。所以,我甚至不知道所有代码在做什么;我只知道它是为了解决我提出的问题而发布的。在对代码的错误进行排序之后,如果我没有在其中放置任何东西,那么我不会声明parseLine。 –

+0

然后你应该问问发布代码的人。我们可以猜测,它应该根据名称做什么。当你去除'parseLine()'声明时,编译器当然会抱怨它,因为它必须知道声明才能正确编译它。从上面的注释中,您还必须实现'parseLine()'函数,这意味着,定义函数在“|”处分割行的功能。 –

相关问题