2017-01-12 1 views
0

в основном, если взять входной сигнал от пользователя, попросив его, как показано ниже:Как разделить вход, взятый у пользователя в двух частях, и назначить их двум различным массивам на C++?

cout << "Enter your course code and course name: "; 

Теперь, если пользователь вводит этот «CS201 Введение в программирование», как теперь я могу только присвоить часть кода т.е. «CS201» к массив, скажем;

char courseCode[10]; 

И как я могу присвоить имя часть массива, позволяет сказать:

char courseName[50]; 

Я хочу сделать это до 5 студентов, используя структуру, определяемые ниже:

struct student 
{ 
char courseName[50]; 
char courseCode[10]; 
}; 

student stu[5]; 

Пожалуйста, помогите мне, я не могу понять, как я могу разделить вход в две части и назначить их в двух разных массивах, которые присутствуют в структуре, определенной выше. Заранее спасибо.

+0

http://stackoverflow.com/questions/236129/split-a-string-in-c – learnvst

ответ

0

Ребят, я решил свою проблему с помощью cin.getline() функции, чтобы получить строку в знаке указателя, а затем использовал strchr(char [], cahr) из <string> заголовка файла, чтобы отделить текущую строку из thplace, где идет первое белое пространство. Затем я скопировал обе разделенные строки в нужные элементы моей структуры, используя функцию strcpy().

Спасибо всем за помощь мне здесь :)

3

Это на самом деле просто, как только вы помните, что оператор ввода >> останавливается на белом фоне, а также знает о функции std::getline.

Затем вы можете сделать что-то вроде

std::string courseCode; 
std::string courseName; 

std::cin >> courseCode; 
std::getline(std::cin, courseName); 

Обратите внимание, что я использую std::string для строк вместо массивов. Это то, что вы действительно должен использовать. Если вам не разрешено (вашим учителем или чем-то), а должен использовать массивы, то вы не можете использовать std::getline, вместо этого вместо этого вместо этого нужно использовать std::istream::getline.

+0

«_If вы не допускается (вашим учителем или что-то), затем отправьте его в лаундж cpp, и мы справимся с этим. «FIFY. –

+0

@Some programmer dude Я могу использовать строки и разрешать, но чтобы сделать себя более сильным в массивах, я хочу использовать массивы здесь. Во-вторых, код, который вы написали: 'std :: getline (std :: cin, courseName);' Как бы присвоить имя курса (взятое у пользователя с кодом курса в качестве ввода) в строку курсаName? –

+0

@KhubaibKhawar Функция 'std :: getline' будет читать остальную часть строки и хранить ее в строке, предоставленной в качестве второго аргумента. –

0

магазин вход в одну строку сказать x

Теперь на x выполнить линейный поиск для первого пробела и разбиения строки о первой пробельных. Сохраните две результирующие строки в вашей структуре.

+0

Допустим, я использовал линейный поиск и сохранил первый вход в массиве courseCode, после поиска пробела, теперь как мне назначить левую строку, которая является именем курса в массиве courseName? –

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