所以当我遇到一些问题时,我正在尝试使用数组
代码:
#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上冲浪了这样的问题,但显然我所做的事情显然是错的,没有人问过!
对于特定文档的正确方向的任何帮助或推动都将不胜感激!
感谢。
答案 0 :(得分:1)
即。代码应该是
#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;
}