2017-04-01 58 views
0

我有一个非常简单的代码来创建一个名为“INPUT.TXT”的文本文件,并使用ostream_iterator写它:简单的文件与ostream_iterator写创建的文件,但不写

using namespace std; 


int main() 
{ 
    ofstream os{ "Input.txt" }; 
    ostream_iterator<int> oo{ os,"," }; 

    vector<int> ints; 
    for (int i = 0; i < 1000; i++) 
    { 
     ints.push_back(i); 
    } 

    unique_copy(ints.begin(), ints.end(), oo); 

    system("PAUSE"); 
    return 0; 
} 

代码上面创建一个“Input.txt”,但没有写入它。我是否错过了一些非常明显和基本的东西

回答

1

你是不是叫system()之前刷新流到磁盘。

您可以明确flush()close()流:

int main() { 
    ofstream os{ "Input.txt" }; 
    ostream_iterator<int> oo{ os,"," }; 

    vector<int> ints; 
    for (int i = 0; i < 1000; i++) { 
     ints.push_back(i); 
    } 

    unique_copy(ints.begin(), ints.end(), oo); 

    os.close(); 

    system("PAUSE"); 
    return 0; 
} 

或者你可以把流周围划定范围括号使其熄灭迟早的范围。

int main() { 
    { 
    ofstream os{ "Input.txt" }; 
    ostream_iterator<int> oo{ os,"," }; 

    vector<int> ints; 
    for (int i = 0; i < 1000; i++) { 
     ints.push_back(i); 
    } 

    unique_copy(ints.begin(), ints.end(), oo); 
    } 

    system("PAUSE"); 
    return 0; 
} 
0

我想通了,这是因为我在代码中有“系统(”暂停“)”,阻止输出流进入文件。这是工作代码:

int main() 
{ 
    ofstream os{ "Input.txt" }; // output stream for file "to" 
    ostream_iterator<int> oo{ os,"," }; 

    vector<int> ints; 
    for (int i = 0; i < 1000; i++) 
    { 
     ints.push_back(i); 
    } 

    unique_copy(ints.begin(), ints.end(), oo); 
    return 0; 
} 

不能相信我错过了这....