我在 Visual Studio Code 中遇到了一個奇怪的錯誤——我正在使用標準擴展(C/C 擴展包)在 C 中撰寫代碼,如果我撰寫這樣一個簡單的程式,它可以正常作業:
int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
cout << "Hello World!" << endl;
}
但是,第二次我使用 STD 包含陳述句(例如 a map、vector等)宣告變數時,代碼運行沒有錯誤,但不列印任何內容。
int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
vector<int> test;
cout << "Hello World!" << endl; // this no longer prints
}
任何想法為什么會發生此錯誤?我也有我需要的所有包含陳述句:
#include <bits/stdc .h>
#include <complex>
#include <queue>
#include <set>
#include <unordered_set>
#include <list>
#include <chrono>
#include <random>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <string>
#include <vector>
#include <map>
#include <unordered_map>
#include <stack>
#include <iomanip>
#include <fstream>
using namespace std;
uj5u.com熱心網友回復:
我測驗了您的代碼,它按預期運行。
一些想法:
ONLINE_JUDGE未定義時,使freopen("output.txt", "w", stdout);輸出重定向到output.txt. 也許您在第二次運行程式時忘記檢查檔案而不是控制臺。- 此外,由于您使用的是 Visual Studio Code,也許您使用了擴展程式來運行您的程式。該擴展可能不會使用您當前的作業目錄來運行該程式,這使得
output.txt其他地方。另外,檢查是否ONLINE_JUDGE由擴展程式或您的腳本設定。
順便說一句,如果您使用 g ,#include <bits/stdc .h>將包含標準庫的所有頭檔案,并且不需要包含其他頭檔案。但是這樣做會大大增加你的編譯時間。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/480858.html
上一篇:無法從應用引擎連接云sql
