C ++:程序在读取文件时卡住了。为什么?

时间:2011-11-11 20:25:53

标签: c++ file io

我正在尝试使用visual studio编译C ++软件。

要运行程序,我使用以下命令行:

ABC 0.85  x.txt < x.txt

软件看起来像这样:

int main(int argc, char ** argv)
{
//main variables
float min_sup = atof(argv[1]);          //minimum support
string filename = argv[2];              //input file name

cout << "Hello" << argv << " " << endl;

if(argc < 2)
{
    cout << "[Error] Usage: <min> <input file> < <input file>" << endl;
    cout << "E.g: ./ABC.exe 0.85 input.txt < input.txt" << endl;
    system("PAUSE");
    return 1;
}

//checking min_sup value
if(min_sup <= 0 || min_sup >= 1)
{
    cout << "[Error] Minimum  must be between 0 and 1 exclusively." << endl;
    system("PAUSE");
    return 1;
}

int in_buf;
while(cin >> in_buf)
{

    .....

当我运行该软件时,它会卡在:

 while(cin >>  in_buf)

你知道这是什么问题吗?是如何读取文件的问题?

我在Windows 7 64位上运行代码。

2 个答案:

答案 0 :(得分:1)

ABC 0.85  x.txt < x.txt
                 ^

你有一个额外的空间。你传递的程序有三个参数。您需要两个参数和一个流重定向。

ABC 0.85  x.txt <x.txt

您可以显示argc来验证这一点。

为什么程序需要“x.txt”参数的文件名?我想不出你需要它的任何理由。 此外,在之后验证计数时,您不应阅读参数。

答案 1 :(得分:0)

该文件存在一些问题。我发现了问题。