0

这是我的错误代码:

错误:'class __gnu_debug_def::vector, std::allocator >, std::allocator, std::allocator > > >::std' 由于 -Wfatal 错误,尚未声明编译终止。

此代码只是我为产生相同错误而制作的通用代码,但我的原始代码正在尝试执行该strings::vector::at(i)操作:

#include <iostream>

int main(){
    std::vector<std::string> strings;
    std::string string;

    std::stringstream range1d;
    range1d.str( "Hello0,Hello1,Hello2,Hello3,Hello4,Hello5");

    while(std::getline(range1d,string,',')) {
             strings.push_back(string);

         }

         for(std::vector<std::string>::const_iterator i = strings.begin();  i != strings.end() ; ++i) {
             cout  << "at: " << strings.std::vector::at(i) << endl ;
         }
    return 0;
}  

我对 C++ 相当陌生,虽然给出了错误代码,但我真的不知道如何解决这个问题。google了一段时间。我发现了一些关于声明 typename 之类的东西,但我无法应用它以使其有意义。感谢您的任何帮助

4

1 回答 1

5

i是一个迭代器,为了得到这个值,你只需要取消引用它。

std::cout << "at: " << *i << std::endl;

at成员函数采用索引。也就是说,一个整数,指示您想要的元素在向量中的位置。您可以在如下所示的循环中使用它:

for (unsigned int i = 0; i<strings.size(); ++i)
{
    std::cout << "at: " << strings.at(i) << std::endl;
}

此外,您需要为您使用的所有工具包括适当的标题,即<vector><sstream><string>。您还需要限定coutendlstd命名空间中。

于 2013-08-14T16:30:20.707 回答