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;
}

对于每行带有逗号分隔符的换行符分隔符(你真的应该只选择一个):

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 回答