C ++数组不输出完整值

时间:2014-05-04 16:50:35

标签: c++ arrays

所以当我遇到一些问题时,我正在尝试使用数组

代码:

#include <iostream>
#include <windows.h>

using namespace std;

int main(int argc, char** argv) {
char items[] = {'bread', 'water', 'crisps', 'sweets', 'vegetables'};
for (int i = 0; i < strlen(items); i++) {
        cout << items[i] << endl;
    }
return 0;
}

正在发生的事情是,当代码运行时,它只输出每个项目的最后一个字母,所以&#39; d&#39; &#39; R&#39; &#39; S&#39; &#39; S&#39; &#39; S&#39 ;.我知道我在这里做错了但我无法弄清楚是什么。我已经在stackoverflow / google上冲浪了这样的问题,但显然我所做的事情显然是错的,没有人问过!

对于特定文档的正确方向的任何帮助或推动都将不胜感激!

感谢。

2 个答案:

答案 0 :(得分:1)

  1. 需要一系列字符指针。
  2. 需要使用双引号
  3. 阅读一本关于C ++的书
  4. 即。代码应该是

    #include <iostream>
    #include <windows.h>
    
    using namespace std;
    
    int main(int argc, char** argv) {
    char *items[] = {"bread", "water", "crisps", "sweets", "vegetables"};
    for (int i = 0; i < (sizeof(items) / sizeof(*items)); i++) {
            cout << items[i] << endl;
        }
    return 0;
    }
    

答案 1 :(得分:0)

初始化列表

中的任何这些项目
{'bread', 'water', 'crisps', 'sweets', 'vegetables'};

是一个多字符文字。根据C ++标准

  

多字符文字或包含的普通字符文字   在执行字符集中无法表示的单个c-char是   有条件地支持,类型为int,并且有一个   实现定义的值。

您需要使用字符串文字。我想你想要的是以下

#include <iostream>

int main(int argc, char** argv) 
{
   const char *items[] = { "bread", "water", "crisps", "sweets", "vegetables" };

   for ( const char *s : items ) std::cout << s << std::endl;

   return 0;
}