我希望将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指针。我怎样才能成功地存入阵列?
答案 0 :(得分:3)
由于这是C ++,我会使用STL容器来避免一些char*
限制。 word
类型为std::string
,array
类型为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_back
和std::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);
}