-1

テキストファイルから各行を読み取って配列列に入れようとしていますが、実際にこれを試しました:

    string buffer[256];
string a;
ifstream myfile ("1.txt");

for(i=0;i<10000;i++)
    {

        //readArrivalTimes(i);
        myfile.getline (buffer,100);
        a[i]=buffer;
    }

しかし、それは機能していません

だから私はあなたが私にくれた解決策の1つを試してみましたが、次のようにしました:

std::vector<std::string> v;
std::string buffer;


string a[1024];
ifstream myfile;
myfile.open("1.txt");

for(i=0;i<n;i++)
{
    getline (myfile, buffer);

    a[i]= buffer;
    cout << buffer << "\n";
}

しかし、ご覧のとおり、それは string です!

整数として機能させることはできますか?

[解決済み:)]

まず第一に、これを手伝ってくれたみんなに感謝します。あなたの助けに本当に感謝しています。私はc ++がまったく初めてです。

確かに宿題ではありません。

整数で動作するように、コードにいくつかの変更を加えました

int a[1024];
ifstream myfile;
myfile.open("1.txt");

for(i=0;i<n;i++)
{
    getline (myfile, buffer);

    a[i]= atoi(buffer.c_str());
    cout << buffer << "\n";
}

どうもありがとうございます。

4

3 に答える 3

1

コードには多くの間違いがあります。
char *をint配列に割り当てるものとして、いくつかはすでに言及されています。

しかし、あなたのアプローチはC++よりもCです。C ++では、次のようになります。

std::vector<std::string> lines;
std::ifstream myfile("1.txt");
if(myfile.isopen())
{
    std::string line;
    while(getline(myfile, line))
    {
        lines.push_back(line);
    }
}

私はそれをテストしていませんが、これを行う方法を示しているはずです。

編集:コメントに従ってコードを変更しました。

整数で機能するようにもう一度編集します。

std::vector<int> numbers;
std::ifstream myfile("1.txt");
if(myfile.isopen())
{
    std::string line;
    while(getline(myfile, line))
    {
        int number;
        std::istringstream(line) >> number;
        numbers.push_back(number);
    }
}
于 2012-05-21T21:35:17.317 に答える
0
    int a[1024];
ifstream myfile;
myfile.open("1.txt");
for(i=0;i<n;i++)
{
    getline (myfile, buffer);

    a[i]= atoi(buffer.c_str());
    cout << buffer << "\n";
}

これが正しい答えです

于 2012-05-26T08:02:02.287 に答える
0

a文字の集合を抽象化した文字列です。

a[i]個々の文字への参照を返します。

buffer文字の配列です。配列の名前がその最初の要素へのポインターを指定するという点での C/C++ 規則。

したがって、ループで行っていることはith、 a の要素をバッファーの先頭のアドレスに割り当てることです。これは、ほとんどの場合、やりたいことではありません。

おそらくやりたいことは、文字列の配列を作成することです。すなわち交換

string a;

string a[10000];

コードには他にも対処すべきことがあります。たとえば、ファイルの行数が 1 万行未満の場合はどうでしょうか。

于 2012-05-21T21:22:38.120 に答える