2016-07-29 3 views
-1

Я хотел ввести данные в таблицу в C++. Мне нужно получить ввод в разных столбцах. Проблема в том, что когда я использую cin, он переходит к следующей строке, а не к продолжению в той же строке.Входные данные в таблице в C++

здесь код я использовал:

string itemname; 
int amount; 
float price; 
cout << setprecision(2); 
cout << fixed; 
cout << left << setw(30) << string(30, '-') << endl; 
cout << left << setw(10) << "Itemname" << setw(10) << right << "Amount" << setw(10) << right << "Price" << endl; 
cin >> left >> setw(10) >> itemname >> setw(10) >> right >> amount >> setw(10) >> right >> price; 

есть что-нибудь еще я могу использовать, кроме CIN для этого?

ответ

0

Оператор ввода >> обычно отделяется от места, ant почти для всех типов пропускает ведущее белое пространство. Поэтому при чтении строк или чисел с использованием >> не имеет значения, сколько пробелов есть, если есть одно пространство (пробел, табуляция, новая строка и т. Д.).

Все другое форматирование не используется для ввода, выравнивания влево/вправо или ширины поля не имеет значения, просто выполните, например.

cin >> itemname >> amount >> price; 

и вы должны получить свои три предмета.

И на самом деле ответить на ваш вопрос: это зависит. Если вы хотите использовать классы потоков C++ и C++ для чтения со стандартного ввода, вы можете использовать только std::cin. В противном случае вы можете использовать старые стандартные функции ввода/вывода C для чтения с stdin, но если вы попытаетесь использовать ширину поля, вы получите другие проблемы, такие как ширина поля, например. семейство функций scanf означает что-то другое.


ввода с использованием стандартного ввода, который является единственным стандартом способ читать текстовый ввод (возможно, преобразованы в другие типы) не поле, ориентированном, но линия ориентированной.

вход

foo 1 2 

точно так же, как

foo   1 2 
+0

да, но когда я использую это я не буду получать соответствующие столбцы, есть ли способ, я мог бы достичь этого? –

+1

@ParthSindhu Столбцы разделены пробелами? Тогда код в моем ответе будет отлично работать, чтобы * прочитать * ввод. Стандартный ввод (на C или C++) не является полевым. Базовый код и программы (эмуляторы терминалов и ядро ​​и буферизация) читают * строку *, а затем вы просто анализируете поля в строке по-разному. –

Смежные вопросы