1

読み込んで別のテキストファイルに出力したいテキストファイルの名前のリストがあります。すなわち:

101 Name 1
102 Name 2
103 Name 3

そしてコードのために:

int studentID;
char name[MAX];
while (infile >> studentID)
      {
        infile.getline (name, MAX);
        outfile << left << setw(10) << studentID;
        outfile << left << setw(20) << name;
        outfile << left << setw(10) << "SKIPPED WORD";
      }

テキストファイルから名前の後にEnterキーを読み込み、別のテキストファイルを出力するときにEnterキーに変換され、次のようになります。

101 Name 1
SKIPPED WORD
102 Name 2
SKIPPED WORD
103 Name 3
SkIPPED WORD

これが私が欲しいものです

101 Name 1 SKIPPED WORD
102 Name 2 SKIPPED WORD
103 Name 3 SKIPPED WORD

char配列の最後にある「enter」を削除する方法を知っている人はいますか?

4

2 に答える 2

1

std::getlineこれを解決するにはいくつかの方法がありますが、最も簡単なのはおそらくの代わりに使い始めることですistream::getlinestd::getline改行を読み取りますが、文字列に追加しません。

もう1つの解決策は、読み取った文字列の最後の文字が改行であるかどうかを確認し、代わりに文字列ターミネータ文字に変更することです。

if (name[strlen(name) - 1] == '\n')
    name[strlen(name) - 1] = '\0';
于 2013-01-15T10:35:42.407 に答える
1

の代わりに、 std :: getlineistream::getlineを使用します。これは、終了する改行文字を文字列に格納しません(ただし、ストリームから削除します)。

#include <string>

int studentID;
while (infile >> studentID)
{
    std::string name;
    std::getline(infile, name);

    outfile << left << setw(10) << studentID;
    outfile << left << setw(20) << name;
    outfile << left << setw(10) << "SKIPPED WORD" << '\n';
}

これにより、MAXは不要になり、任意の長さの名前を付けることができます。

于 2013-01-15T10:36:04.283 に答える