0

次の形式で与えられた入力

fifteen,7,fourth-four,2,1,six
66,eight-six,99,eighteen
6,5,4,3,2,1

これを解析できる形式に読み取るには、何を使用できますか? 目標は、数字を並べ替えて、与えられたのと同じ形式で順番に出力できるようにすることです。たとえば、次のように出力する必要があります。

    1,2,six,7,fifteen,forty-four
    eighteen,66,eighty-six,99
    1,2,3,4,5,6

並べ替えをどのように行うべきかについての考えはありますが、入力を読み取るための最良の方法を見つけるのに苦労しています。現在、私はこれを行うだけで使用しています:

#include <iostream>
#include <string>
using namespace std;

int main() {
    char word;
    char arr[20];

    int count = 0;

    while (cin >> word) {
        if (word == '\n') {
            cout << "Newline detected.";
        }
        cout << "Character at: " << count << " is " << word << endl;
        count++;
    }
}

読み込まれないため、これは機能しません\n

4

1 に答える 1

2

IMOを実行する最も簡単な方法は、区切り文字として「、」を指定してstd::istreamのgetline関数を使用することです。

例:のようなもの。

char dummystr[256];
int count = 0;
while (cin.getline(dummystr, 256, ',')) {
    cout << "Character at: " << count << " is " << dummystr << endl;
    ++count;
}

各行にコンマ区切り文字がある改行区切り文字の場合(実際には1つだけ選択する必要があります):

char dummystr[256]; // not max size for the string
int count = 0;
while (cin.getline(dummystr, 256, '\n')) {
    std::stringstream nested(dummystr);
    char dummystr2[256];
    while (nexted.getline(dummystr2, 256, ',')) {
        cout << "Character at: " << count << " is " << dummystr << endl;
        ++count;
    }
}
于 2013-02-27T03:23:53.840 に答える