📅  最后修改于: 2023-12-03 14:40:00.345000             🧑  作者: Mango
C++ 是一种高级编程语言,它扩展了 C 语言,支持面向对象编程。
C++ 编译器有很多种,常用的有 GCC、Clang 和 Visual Studio 等。我们可以根据自己的需求去选择相应的编译器。
GCC 是 Linux 中最常用的 C++ 编译器。可以通过命令行安装:
sudo apt-get update
sudo apt-get install build-essential
macOS 上默认安装了 Clang 编译器,可以通过命令行进行编译:
clang++ test.cpp
Visual Studio 是 Windows 平台上最常用的 C++ 编译环境。可以从官网下载并安装。
下面是一个简单的 C++ 程序:
#include <iostream>
int main() {
std::cout << "Hello, world!" << std::endl;
return 0;
}
在命令行中使用编译器进行编译:
g++ hello.cpp -o hello
然后运行:
./hello
C++ 中使用 cin
进行输入,使用 cout
进行输出。示例代码如下:
#include <iostream>
int main() {
int num;
std::cout << "Please enter a number:";
std::cin >> num;
std::cout << "The number you entered is:" << num << std::endl;
return 0;
}
C++ 中有标准库 string
可以用于字符串操作。
#include <iostream>
#include <string>
int main() {
std::string str;
std::cout << "Please enter a string:";
std::cin >> str;
std::cout << "The string you entered is:" << str << std::endl;
return 0;
}
C++ 中可以使用标准库的 fstream
类进行文件操作。
#include <fstream>
#include <iostream>
#include <string>
int main() {
std::string fileName;
std::cout << "Please enter file name:";
std::cin >> fileName;
std::ofstream outFile(fileName); // 打开文件进行写操作
if (outFile.is_open()) {
outFile << "Hello, world!\n";
outFile.close();
} else {
std::cout << "Failed to open file:" << fileName << std::endl;
}
std::string line;
std::ifstream inFile(fileName);// 打开文件进行读操作
if (inFile.is_open()) {
while (std::getline(inFile, line)) {
std::cout << line << std::endl;
}
inFile.close();
} else {
std::cout << "Failed to open file:" << fileName << std::endl;
}
return 0;
}
C++ 中有很多内置的数据结构,如数组、vector、map、set 等。需要包含相应的头文件。
#include <vector>
#include <map>
#include <iostream>
int main() {
// 定义数组
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
// 定义 vector
std::vector<int> vec = {1, 2, 3, 4, 5};
for (auto v: vec) {
std::cout << v << " ";
}
std::cout << std::endl;
// 定义 map
std::map<std::string, int> mp = {{"test", 1}, {"hello", 2}};
for (auto m: mp) {
std::cout << m.first << ":" << m.second << " ";
}
std::cout << std::endl;
// 定义 set
std::set<int> st = {1, 2, 3, 4, 5};
for (auto s: st) {
std::cout << s << " ";
}
std::cout << std::endl;
return 0;
}
C++ 中可以使用 try
和 catch
块进行异常处理。
#include <iostream>
#include <string>
void test() {
throw std::string("Exception occurred!");
}
int main() {
try {
test();
} catch (std::string& ex) {
std::cout << "Exception caught:" << ex << std::endl;
}
return 0;
}
C++11 中引入了多线程编程的支持。可以使用 std::thread
类进行多线程编程。
#include <iostream>
#include <thread>
void func(int num) {
std::cout << "Thread id:" << std::this_thread::get_id() << ", num:" << num << std::endl;
}
int main() {
std::thread t1(func, 1); // 创建线程并指定函数和参数
std::thread t2([]() { std::cout << "Thread id:" << std::this_thread::get_id() << std::endl; }); // 创建线程并使用 lambda 表达式
t1.join(); // 等待线程执行完毕
t2.join();
return 0;
}
C++ 中可以使用 Google Test 进行单元测试。它是一个 C++ 的测试框架,支持多种测试方式。
#include <gtest/gtest.h>
TEST(TestCase, Test1) {
EXPECT_EQ(1, 1);
}
TEST(TestCase, Test2) {
ASSERT_TRUE(false);
}
int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
以上为常见的十个 C++ 小问题的解答,欢迎阅读。