如何用指针读取char中的第二个字母?我可以阅读整个消息“鲤鱼”和第一个字母'c',但我不知道如何阅读第二个字母......这是我的示例代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
struct list {
char name[20];
int length;
};
list first ={
"carp",
6,
};
list *p = &first;
cout << p->name << endl; // "carp"
cout << *p->name << endl; // "c"
p = p + 1;
cout << *p->name << endl; // Not working...How to read a?
return 0;
}
答案 0 :(得分:6)
使用<ItemsControl ItemsSource="{Binding Permissions}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" Width="100" VerticalAlignment="Center"/>
<ComboBox SelectedValuePath="Content" SelectedValue="{Binding Permission}">
<ComboBoxItem Content="None"/>
<ComboBoxItem Content="Read"/>
<ComboBoxItem Content="Write"/>
</ComboBox>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
或p
增加p++
会将您移至p = p+1
的下一个实例,这不是您想要的(并且它甚至不在那里) )。
相反,您想要移到struct list
的第二个字母,这可以通过多种方式完成:
name
cout << p->name[1] << endl;
并将其递增,即p->name
char *np = p->name; np++; cout << *np
答案 1 :(得分:2)
您可以在public T create(T entity) {
return getEntityManager().merge(entity);
}
上使用 index 来访问任何字符:
name
//给出了&#39; <#39;
p->name[1]
//给出&#39; r&#39;
请注意,数组的索引值为0.因此p->name[2]
会给p->name[0]
。
'c'
实际上会增加p + 1
,这是指向p
的指针。这基本上移动到list
的下一个实例,甚至在代码中都没有初始化。
答案 2 :(得分:2)
使用索引为onaftersave
的数组subscript operator:
1
答案 3 :(得分:1)
如果你想使用没有下标操作符的指针输出第二个字符,那么你可以写
cout << p->name[1] << endl;
与
相同for ( const char *q = p->name; *q != '\0'; ++q )
{
cout << *q;
}
cout << endl;
或者你可以引入一个中间指针。例如
{{1}}