将数组复制到向量中
|
我写了一个小程序:
void showrecord()
{
char *a[]={ \"O_BILLABLE_ACCOUNT\",\"O_CUSTOMER_TYPE_INDICATOR\",
\"O_A_PARTY_MSISDN_ID\",\"O_A_PARTY_EQUIPMENT_NUMBER\",
\"O_A_PARTY_IMSI\",\"O_A_PARTY_LOCATION_INFO_CELL_ID\",
...
};
vector<std::string> fields(a,a+75);
cout<<\"done!!!\"<<endl;
}
int main()
{
showrecord();
}
我有字符串文字数组,我希望将它们复制到向量中。
我没有找到其他简单的方法来做到这一点:(。或者如果有任何直接的方法可以在不使用数组的情况下初始化向量,那将非常有帮助。
我在UNIX上运行可执行文件后,这就是转储核心。
它给了我一个警告,尽管:
Warning 829: \"test.cpp\", line 12
# Implicit conversion of string literal to \'char *\' is deprecated.
D_TYPE\",\"O_VARCHAR_5\",\"O_VARCHAR_6\",\"O_VARCHAR_7\",\"O_VARCHAR_8\",\"O_VARCHAR_9\"};
但是,相同的代码在Windows上运行正常,没有任何问题。
我在HPUX上使用编译器aCC。
请帮忙!
编辑
下面是转储的堆栈跟踪。
(gdb) where
#0 0x6800ad94 in strlen+0xc () from /usr/lib/libc.2
#1 0xabc0 in std::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string<char,std::char_traits<char>,std::allocator<char>>+0x20 ()
#2 0xae9c in std<char const **,std::basic_string<char,std::char_traits<char>,std::allocator<char>> *,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>>::uninitialized_copy+0x60 ()
#3 0x9ccc in _C_init_aux__Q2_3std6vectorXTQ2_3std12basic_stringXTcTQ2_3std11char_traitsXTc_TQ2_3std9allocatorXTc__TQ2_3std9allocatorXTQ2_3std12basic_stringXTcTQ2_3std11char_traitsXTc_TQ2_3std9allocatorXTc____XTPPCc_FPPCcT118_RW_is_not_integer+0x2d8
()
#4 0x9624 in showrecord () at test.cpp:13
#5 0xdbd8 in main () at test.cpp:21
没有找到相关结果
已邀请:
3 个回复
佃蒜狗掂哥
至
对于C ++ 03,没有可以用“更好的”方式初始化向量的方法,但是对于C ++ 0x,您可以使用更方便的语法,而无需使用C数组:
澳绍能
代替
。字符串文字的类型为
,而不是
,因此会出现警告。
痰降锭骂奸