I am using the StreamWriter
class to write some text to a newly created text file, but the output is always weirdly wrong, this is my code:
StreamWriter sw = new StreamWriter("newtextfile.txt", false, Encoding.Unicode);
for (int d = 0; d < count; d++)
{
sw.WriteLine(d + '^' + str1[d] + '^' + str2[d] + '^' + str3[d]);
}
sw.Flush();
sw.Close();
the output goes like this(this is the start of the file):
65342STR1^STR2^STR3
65343STR1^STR2^STR3
...etc
I have no idea why is the WriteLine
skipping the d + '^'
and writing that random number.
The problem is that this expression:
d + '^'
doesn't involve any strings. It's trying to add an int
and a char
, which it does by promoting the char
to int
(which will have a value of 65342, because that's the UTF-16 code unit for '^'
), and then performing normal numeric addition. The result (an int
) is then being converted to a string due to the subsequent +
operator with str1[d]
as its right-hand operand.
You could use string literals instead:
d + "^" + ...
but I would personally use formatting instead:
sw.WriteLine("{0}^{1}^{2}^{3}", d, str1[d], str2[d], str3[d]);
That's simpler to read, in my view.
See more on this question at Stackoverflow