Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Посимвольное считывание в С#

Автор: TS* 6.10.2006 21:29

Возможно ли к экземпляру класа "string" добавить символ "char" последовательно?
Когда я делаю вот так:



string cmnd = ("");
char chr;
do
{
chr = (char)Console.Read();
cmnd+=chr;
} while (chr != ' ');
Console.WriteLine(cmnd);




Каждый символ кидает в отдельную строку, как сделать чтоб символы "склеивались" в одной строке?

Автор: klem4 6.10.2006 23:13

Что значит склеивались ? А чем этот метод не подходит ?

Вот так еще можно :


static void Main(string[] args)
{
char ch;
string s = "";

do
{
ch = Console.ReadKey().KeyChar;
s += ch;
} while (ch != ' ');
Console.WriteLine(s);
Console.ReadLine();
}


Автор: TS* 7.10.2006 4:09

В твоем случае всьо нормально, в моем должно делать то же, но почеу то выводит в консоль строку не целую, а по частях, типа ввел: "абв", потом "олд", оно выводит :

Код

абв
олд


вот попробуй.
Кстати может у кого есть какието доки по методах класов С#?

Автор: volvo 7.10.2006 4:23

Цитата
типа ввел: "абв", потом "олд"
А что ты между ними ввел? Уж не Enter ли нажимал? Тогда чего удивляешься, что "разбито" на 2 строки? Как, по-твоему, должна выводиться строка "абв\nолд" ?

Автор: TS* 7.10.2006 4:58

Понял, также перед этим пробовал StringBuilder, а к нему присоединять строки, выводило в одной строке,
просто конечная цель сделать чтоб первое слово записалось в одну переменную, а второе во вторую, потом <Enter>, попробовал:


char ch;
string cmnd = "";
string way = "";

do
{
ch = Console.ReadKey().KeyChar;
cmnd += ch;
} while (ch != ' ');
ch='';
do
{
ch = Console.ReadKey().KeyChar;
way += ch;
} while (ch != '\n');

Console.WriteLine(cmnd);
Console.WriteLine(way);




Но оно начинает бесконечно считывать символы

Автор: volvo 7.10.2006 5:52

while (ch != '\n');
будет работать некорректно...

Нужно
while (ch != 0x0d);
если я не ошибаюсь... Или 0x0a unsure.gif (проверить сейчас не могу, у меня С# не установлена...)