使用某些数据结构时,C++ 代码不会在 Visual Studio 代码中输出
C++ Code doesn't output in Visual Studio Code when certain data structures are used
我 运行 在 Visual Studio 代码中遇到了一个奇怪的错误 - 我正在使用标准扩展(C/C++ 扩展包)在 C++ 中编写代码,如果我写像这样一个简单的程序,它运行良好:
int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
cout << "Hello World!" << endl;
}
但是,第二次我使用 STD include 语句声明一个变量,例如 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;
我测试了您的代码,运行 符合预期。
一些想法:
- 当
ONLINE_JUDGE
未定义时,freopen("output.txt", "w", stdout);
使输出重定向到 output.txt
。也许您第二次 运行 您的程序时忘记检查文件而不是控制台。
- 此外,由于您使用的是 Visual Studio 代码,可能您使用了 运行 程序的扩展。该扩展程序可能不会使用您当前的工作目录来 运行 程序,这使得
output.txt
别处。另外,检查 ONLINE_JUDGE
是否由扩展程序或您的脚本设置。
顺便说一句,如果你使用 g++,#include <bits/stdc++.h>
将包含标准库的所有头文件,不需要包含其他头文件。但是这样做会大大增加你的编译时间。
我 运行 在 Visual Studio 代码中遇到了一个奇怪的错误 - 我正在使用标准扩展(C/C++ 扩展包)在 C++ 中编写代码,如果我写像这样一个简单的程序,它运行良好:
int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
cout << "Hello World!" << endl;
}
但是,第二次我使用 STD include 语句声明一个变量,例如 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;
我测试了您的代码,运行 符合预期。
一些想法:
- 当
ONLINE_JUDGE
未定义时,freopen("output.txt", "w", stdout);
使输出重定向到output.txt
。也许您第二次 运行 您的程序时忘记检查文件而不是控制台。 - 此外,由于您使用的是 Visual Studio 代码,可能您使用了 运行 程序的扩展。该扩展程序可能不会使用您当前的工作目录来 运行 程序,这使得
output.txt
别处。另外,检查ONLINE_JUDGE
是否由扩展程序或您的脚本设置。
顺便说一句,如果你使用 g++,#include <bits/stdc++.h>
将包含标准库的所有头文件,不需要包含其他头文件。但是这样做会大大增加你的编译时间。