存储字符串的C ++多维数组

时间:2013-11-27 03:10:35

标签: c++ arrays

我希望将10个单词存储到多维数组中。这是我的代码。

char array[10][80]; //store 10 words, each 80 chars in length, get from file
int count = 0;
while ( ifs >> word ){ //while loop get from file input stream <ifstream>
  array[count++][0] = word;
}

当我编译时,出现错误。 “从'char *'无效转换为'char'”。 ifs返回一个char指针。我怎样才能成功地存入阵列?

3 个答案:

答案 0 :(得分:3)

由于这是C ++,我会使用STL容器来避免一些char*限制。 word类型为std::stringarray类型为std::vector<std::string>,您可以push_back代替分配。代码如下所示:

#include <string>
#include <vector>

std::string word;
std::vector<std::string> array;
while(ifs >> word) {
   array.push_back(word);
}

这比char*更好,原因如下:你隐藏动态分配,你有真正的可变大小的单词(最大内存大小),如果你需要超过你的话,你没有任何问题10个字。

编辑:如评论中所述,如果你有一个支持C ++ 11的编译器,你可以改用emplace_backstd::move来移动字符串而不是复制它(仅emplace_back将构造字符串inplace。)

答案 1 :(得分:0)

你应该定义一个指向我认为的数组的指针,它可以逐个访问数组块的每个值(或者你想要的方式)。您也可以尝试动态分配。那些是指针的东西,所以它很容易比较。

答案 2 :(得分:0)

字是char *(字符串),但是数组[count ++] [0]存储一个char,你可以改变“array [count ++] [0] = word;” to“strcpy(array [count ++],word);”

char array[10][80]; //store 10 words, each 80 chars in length, get from file
int count = 0;
while ( ifs >> word ){ //while loop get from file input stream <ifstream>
  strcpy(array[count++], word);
}