为什么我得到“从'vector <country>'转换为'int''没有可行的转换?”</country>

时间:2014-09-29 01:20:16

标签: c++ vector

我真的不确定为什么我收到这个错误。我试图谷歌它但我没有得到最好的结果...如果有人可以告诉我为什么我收到这个错误:

No viable conversion from 'vector<Country>' to 'int'

int main()
{
    vector<Country> readCountryInfo(const string& filename);

    // Creating empty vector
    vector<Country> myVector;

    // Opening file
    ifstream in;
    in.open("worldpop.txt");

    if (in.fail()) {
        throw invalid_argument("invalid file name");
    }

    while (in) {

        char buffer; // Character buffer
        int num; // Integer to hold population
        string countryName; // Add character buffer to create name

        while (in.get(buffer)) {

            // Check if buffer is a digit
            if (isdigit(buffer)) {
                in.unget();
                in >> num;
            }

            // Check if buffer is an alphabetical character
            else if (isalpha(buffer) || (buffer == ' ' && isalpha(in.peek()))) {
                countryName += buffer;
            }

            // Checking for punctuation to print
            else if (ispunct(buffer)) {
                countryName += buffer;
            }

            // Check for new line or end of file
            else if (buffer == '\n' || in.eof()) {
                // Break so it doesn't grab next char from inFile when running loop
                break;
            }

        }

        Country newCountry = {countryName, num};
        myVector.push_back(newCountry);

    }

    return myVector;

}

2 个答案:

答案 0 :(得分:5)

它在这里说

int main()

main会返回int - 因为标准需要它。

然后,最后,你说

return myVector;

myVectorvector<Country>,无法转换为int
因此错误信息。

我怀疑,基于声明

vector<Country> readCountryInfo(const string& filename);
返回vector<Country>的函数的

,您打​​算在名为&#34; readCountryInfo&#34;的函数中编写代码,但不知何故碰巧写入了错误的地方。

答案 1 :(得分:1)

您的int main()应该返回一个int,而不是myVector(代码的最后一行)。

在c ++中,main返回一个int,通常为零。