私は最大40の名前(> 10文字)、姓(> 12文字)、ID#(常に6文字)、および6つの成績(最低のものを削除する必要があります)私は文字列ライブラリの使用を制限されています。C++ - get()を使用した後に文字を操作するにはどうすればよいですか?
ので、基本的にこのような何か(データの間にスペースと\ tのとはい、任意の量):
Adam Zeller 452313 78 86 91 64 90 76
Barbara Young 274253 88 77 91 66 82 93
Carl Wilson 112235 87 99 76 15 95 94
Alec Burmeister 234689 45 76 98 54 12 8
、最終的にそれが見えるように必要があります:
私は現在、getline()、get()で多くの問題を抱えていますが、これらのいずれかを使用することができます(データを受け取るためにcin >>を使用することはできません...)
私は使用しようとしました両方とも、getline gi私は間違っているかもしれませんが、私はあまりにも多くのバグを抱えており、今のところ最も有望であるようです。
const int SIZE = 256;
char student_list[SIZE];
char input_filename[40] = "student_input.txt",
output_filename[40] = "student_results.txt";
Student student[40]; // I want to use a struct, but still trying to figure
// out how to make the characters into variables so
// that I can manipulate the values.
fstream fin;
fin.open(input_filename, ios::in);
if(fin.fail())
{
cout << "ERROR - COULD NOT FIND INPUT FILE \n\n";
return 1;
}
char c;
while (fin.get(c)) // loop getting single characters
{
if((c == ' '))
c = '\b';
else if(c == '\t')
c == '\b';
else
cout << c;
}
cout << "\n\nProgram successfully terminated!\n";
fin.close();
return 0;
私は、これは私だけの出力を取得するので、このコードは、少し欠陥がある知っているが、それは私もそれを期待してどのように動作しますが...それだけのすべてを取り出す:
私は現在、これを持っていますスペースと\ t。そして、私のすべてのデータがあります(唯一の彼ではなく、誰でも他の人の...アダムZellers'行の最後の値を食べたgetlineのと比較して、なぜIDKの。)
AdamZeller452313788691649076
BarbaraYoung274253887791668293
CarlWilson112235879976159594
AlecBurmeister23468945769854128
私が手出力だことが、私は配列ではなくchar cを使用しているので、値を取って外に出力することはできません。それに、配列を使うことができても、各名前と姓が違うので、それはうまくいきません。
とにかく、私はこれをしていますそれよりも複雑な、または私は正しい道にいますか?文字列ではなく個々の文字であるため、各個別の文字を操作する方法や、文字の各セット(名前、最後、ID、等級)を変数に格納する方法はわかりません。
'std :: getline'を使って行全体を読み込み、' std :: istringstream'に '>>'を使用できますか?練習の目的は何ですか?どのように文字列に追加し、文字シーケンスから数値を作成するのですか?それ以外の場合、私は本当に有用な目的を見逃す。 –
@Someprogrammerdude私は誠実に目的を知らない。そして、彼は、>>演算子を使ってファイルから入力を得ることができないと述べているので、私はそれを行うことはできません。 – Nano