#c #string #file-io
#c #строка #файл-ввод-вывод
Вопрос:
В принципе, я пытаюсь получить три вещи из одной строки кода, прочитанной из файла .txt. Это будет повторено, но пока мне нужно знать только, как получить одну строку. Строка, которую я читаю, выглядит так:
Biology $11 12
Поэтому я хочу получить строку и два ввода и полностью игнорировать $ (обратите внимание, я не могу изменить файл .txt, поэтому я должен оставить $ in).
Так что, если у меня есть
string subject; int biologyscores[25];
Код, который у меня есть, таков :
int biologyscores[25]; //array to store the integer values std::string subject; //string to store the subject the scores are for std::ifstream infile("myScores.txt"); //declare infile to read from "myScores.txt" infile gt;gt; subject gt;gt; biologyscores[0] gt;gt; biologyscores [1]; //read into string and int array
Таким образом, строка будет использоваться для проверки того, для какого предмета предназначены эти оценки, а сами оценки будут храниться в массиве биологических хранилищ, проиндексированных рядом друг с другом.
Проблема в том, что после выполнения этого кода тема = «Биология», что желательно, но у биологических хранилищ с индексом 0 и 1, похоже, есть ненужные номера, а не то, что я хочу в них прочитать.
Комментарии:
1. В зависимости от формата вашего файла может потребоваться прочитать целую строку в строку std::и проанализировать строку. Также будьте осторожны при чтении строки, в
nfile gt;gt; subject
которой все ваши предметы содержат ровно 1 слово, и у вас нет шансов, что в них будет пробел?2. @drescherjm некоторые темы состоят из нескольких слов
3. Мое предложение состоит в том, чтобы вы начали с чтения всей строки в строку. Затем попытайтесь проанализировать строку. Обычно это проще (и гораздо менее подвержено ошибкам).
4. Я решил эту проблему, спасибо всем за вклад!
Ответ №1:
Вы можете использовать фиктивную символьную переменную, которая «подхватит» символ $ :
char dummy_char; infile gt;gt; subject gt;gt; dummy_char gt;gt; biologyscores[0] gt;gt; biologyscores [1]; //read into string and int array
Комментарии:
1. это работает для этого ввода, спасибо. Мне любопытно, однако, как заставить его работать с темой, состоящей из нескольких слов? т. Е. компьютерная наука
2. Если $ всегда присутствует, вы можете использовать его в качестве окончания темы, будь то одно слово или несколько.
Ответ №2:
Вы можете использовать seekg и tellg
std::fstream infile("myScores.txt"); //declare infile to read from "myScores.txt" int temp; infile gt;gt; subject; //read into string temp=infile.tellg(); //to get the position of $ infile.seekg(temp 1);// to move one step forward infilegt;gt; biologyscores[0] gt;gt; biologyscores [1];//now you can read the int values