这是对的吗?
string a;
a = Console.ReadLine();
for (int i = 0; a[i] != '\0'; i++)
{
Console.WriteLine(a[i]);
}
答案 0 :(得分:3)
不,这不正确,因为C#字符串通常不以NUL字符终止。
您需要使用i < a.Length
终止循环,而不是查看数组。
答案 1 :(得分:1)
与C和C ++不同,c#中的字符串不是NUL
- 终止。相反,您可以通过Length
属性获取其长度。要在一行上打印每个字符,您可以使用:
string a;
a = Console.ReadLine();
for (int i = 0; i< a.Length; i++)
{
Console.WriteLine(a[i]);
}
或者,使用foreach
:
foreach(char c in a)
{
Console.WriteLine(c);
}
此外,尽管有a[i]
语法,但.Net中的字符串不是char数组,它们是(不可变的)对象。它们可能使用char数组实现,但这是另一回事。您可以使用a[i]
语法的原因是String
定义了索引器。
答案 2 :(得分:1)
你也可以这样做:
string a;
a = Console.ReadLine();
foreach(var c in a)
{
Console.WriteLine(c);
}
答案 3 :(得分:0)
不,这不正确,因为NUL字符未存储在string
中。我会用foreach
语句执行此操作:
string a = Console.ReadLine();
foreach (var myChar in a)
{
Console.WriteLine(myChar);
}
答案 4 :(得分:0)
不,这不起作用。 C#字符串不 NUL
- 已终止。相反,它们存储长度属性。这在垃圾收集语言中很常见。例如,这会产生一个有效的字符串:
string a = "a string ";
a += '\0';
a += " still the same string";
你可以做的是:
foreach (char c in a)
{
Console.WriteLine(c);
}
或者这个:
for (int i=0;i<a.Length;i++)
{
Console.WriteLine(a[i]);
}
答案 5 :(得分:0)