如何定义vector存放字符串数组(里面每个元素都是字符串数组)

newpeng 2007-05-10 10:30:33
string ds[6];

strVec.push_back(ds);



vector<string [6]> strVec;
vector<string []> strVec;
vector<string > strVec;
vector< vector<string> > strVec;
这样定义都不行

...全文
4599 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainv 2007-05-13
  • 打赏
  • 举报
回复
mark
wdloo 2007-05-12
  • 打赏
  • 举报
回复
SDFSDF
freenux 2007-05-11
  • 打赏
  • 举报
回复
看来这种方式是行不通的,你还是令想另一种方法吧
yblue 2007-05-11
  • 打赏
  • 举报
回复
#include<iostream>
#include<string>
#include<vector>

using namespace std;

int main()
{
string str = "OK";
vector< string > vecstr;
vecstr.push_back(str);
vector<string>::iterator iter = vecstr.begin();
cout << *iter << endl;

return 0;
}
这是我的代码,你看看吧,或许有用,可以运行的.
taodm 2007-05-10
  • 打赏
  • 举报
回复
那是你乱写试图输出这个vector<vector<string> >的代码的后果。
要2重循环,你少了一重。
newpeng 2007-05-10
  • 打赏
  • 举报
回复
可以了,是我写cout <<"v='"<< strVec[i]<<"'" << endl;导致出错的,谢谢楼上的各位朋友,
newpeng 2007-05-10
  • 打赏
  • 举报
回复
pro_20.cpp: In function `bool data_doing(std::string*)':
pro_20.cpp:117: error: no match for 'operator<<' in 'std::operator<< [with _Traits = std::char_traits<char>](((std::basic_ostream<char, std::char_traits<char> >&)(&std::cout)), ((const char*)"v=\'")) << (&strVec)->std::vector<_Tp, _Alloc>::operator[] [with _Tp = std::vector<std::string, std::allocator<std::string> >, _Alloc = std::allocator<std::vector<std::string, std::allocator<std::string> > >](((unsigned int)i))'
/usr/lib/gcc/i386-redhat-linux/3.4.3/../../../../include/c++/3.4.3/bits/ostream.tcc:63: note: candidates are: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>&(*)(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]


这样的错误,很多.
taodm 2007-05-10
  • 打赏
  • 举报
回复
啥错?
newpeng 2007-05-10
  • 打赏
  • 举报
回复
string ds[6];
vector< vector<string> > strVec;
strVec.push_back(vector<string>(ds, ds+6 ));


vector<vector<string> > vvs;
vvs.push_back(vector<string>(ds, ds + sizeof(ds)/sizeof(ds[0])));
这两种方式都是不行的,编译出错.
pkrobbie 2007-05-10
  • 打赏
  • 举报
回复
string ds[6];

strVec.push_back(vector<string>(ds, ds+6 ));

vector< vector<string> > strVec;
taodm 2007-05-10
  • 打赏
  • 举报
回复
那当然是vector<vector<string> > vvs;
vvs.push_back(vector<string>(ds, ds + sizeof(ds)/sizeof(ds[0])));
newpeng 2007-05-10
  • 打赏
  • 举报
回复
我说说我的需求吧,我拿到一个长长的字符串,要做两次拆分(也就是二维数组),第一维长度我是不知道的,只有第二维的长度我知道,所以我就定义一个vector用来保存,而vector里面的每个元素都是一个字符串数组.
lightnut 2007-05-10
  • 打赏
  • 举报
回复
#include <string>
#include <vector>

void foo()
{
typedef vector<string> strArray;
typedef vector<strArray> strArray2;

strArray strings1;
strings1.push_back("string1");
strings1.push_back("string2");

strArray2.push_back(strings1);

strArray strings2;
strings2.push_back("string21");
strings2.push_back("string22");

strArray2.push_back(strings2);



}
taodm 2007-05-10
  • 打赏
  • 举报
回复
string ds[6];

strVec.assign(ds,ds + sizeof(ds)/sizeof(ds[0]));
jixingzhong 2007-05-10
  • 打赏
  • 举报
回复
string ds[6];
==》
vector<string>

我想这样应该更合适吧?
jixingzhong 2007-05-10
  • 打赏
  • 举报
回复
把结构调整一下:
string ds[6];
==》
vector<string>

strVec.push_back(ds);
那么 strVec 就可以定义为 vector< vector<string> > strVec;
newpeng 2007-05-10
  • 打赏
  • 举报
回复
#include <vector>
using namespace std;
这个我已经添加了的.
newpeng 2007-05-10
  • 打赏
  • 举报
回复
楼上的,不行,我已经试过.都要出错.vector<string []> strVec;这个写法都是错误的就不用说了
vector<string [6]> strVec; 这个我不大明白是什么含义,看起来好像是可以保存一个字符串数组,但是一编译就出错(strVec.push_back(ds); 这里出错)
vector<string > strVec; 这个相当于一维数组
vector< vector<string> > strVec; 这个是vector里面保存vector,
believefym 2007-05-10
  • 打赏
  • 举报
回复
vector、string都在名字空间std下面
believefym 2007-05-10
  • 打赏
  • 举报
回复
#include <vector>
using namespace std;

除了第二个,其他三个都行的

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧