2012-11-15 46 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()'函數,這意味着,定義函數在「|」處分割行的功能。 –

相關問題