1

b[c]文字列を配列に格納できません。何も 出力されない場合、配列に格納するにはどうすればよいですか?

int main(int argc, char *argv[])
{
    string b[80000];
    int c=0;
    string s;
    ifstream file(argv[1]);

    while(file >> s) {
        b[c]=s;
        c++;
        cout<<b[c];
    }

    system("pause");
    return 0;
}
4

2 に答える 2

3

空の文字列を印刷しています。cout << b[c];前に移動するだけc++;

を使用することをお勧めします。これによりstd::vector、不要な一時変数と魔法の定数が回避されます。

#include <iostream>
#include <vector>
#include <string>
#include <fstream>

int main(int argc, const char* argv[])
{
    std::ifstream fin(argv[1]);

    std::vector<std::string> v
    {
        std::istream_iterator<std::string>(fin),
        std::istream_iterator<std::string>()
    };

    for(const auto& elem: v)
        std::cout << elem << std::endl;

    return 0;
}

ファイル名が渡されない場合やファイルが存在しない場合も処理することを忘れないでください。

于 2013-07-19T09:14:49.540 に答える