2
#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main()
{
    vector<string>  a;
    a.push_back("1 1 2 4");
    a.push_back("2 3 3 3");
    a.push_back("2 2 3 5");
    a.push_back("3 3 3 3");
    a.push_back("1 2 3 4");
    for (int i=0;i<a.size();i++)
        for(int j=0;j<a[i].length();j++)
            cout<<a[i].at[j];
    return 0;
}

您好,运行上面的代码时,出现如下错误:

error C2109: subscript requires array or pointer type

请帮助我并告诉我原因,谢谢!

4

2 回答 2

7

at是一个函数,需要用()not调用[]

更新

cout<<a[i].at[j];
//           ^^^

a[i].at(j)
//   ^^^^^

要输出string,您不需要cout每个字符,只需执行

for (int i=0; i<a.size(); i++)
{
   std::cout << a[i] << "\n";
}
std::cout << std::endl;

或者如果 C++11:

for(auto const & s : a)
{
   cout << s << "\n";
}
于 2013-10-17T08:43:37.440 回答
0

使用基于范围的 for 语句更简单。例如

for ( const std::string &s : a )
{
    for ( char c : s ) std::cout << c;
    std::cout << std::endl;
}
于 2013-10-17T08:59:53.010 回答