VS2019 C++ 通过 filesystem 对外部普通的配置文件中字符串读写功能的实现,不需要键值对方法读取指定行字符串
时间: 2024-10-22 08:11:10 浏览: 15
在VS2019的C++中,你可以使用C++17标准库中的filesystem (fs) 库来操作文件系统,包括读写文本文件。对于简单的字符串读写,你可以直接打开一个文件,进行逐行读取或写入。下面是一个基本的例子,展示如何打开一个配置文件并读取某一行字符串,假设配置文件的每一行都包含一条单独的字符串:
```cpp
#include <iostream>
#include <fstream>
#include <filesystem>
namespace fs = std::filesystem;
std::string readConfigString(const std::string& filePath, size_t lineNumber) {
std::ifstream configFile(filePath);
if (!configFile.is_open()) {
throw std::runtime_error("Failed to open the config file.");
}
std::string line;
for (size_t i = 1; i <= lineNumber && getline(configFile, line); ++i) {} // 遍历直到找到目标行
if (i > lineNumber) { // 没有达到指定行数,则表示文件太小或不存在该行
configFile.close();
throw std::runtime_error("Invalid line number in the config file.");
}
configFile.close();
return line;
}
void writeConfigString(const std::string& filePath, const std::string& line, size_t lineNumber) {
std::ofstream configFile(filePath, std::ios::app); // 'a' for append mode
if (!configFile.is_open()) {
throw std::runtime_error("Failed to open the config file for writing.");
}
configFile << "Line " << lineNumber << ": " << line << "\n"; // 写入新行
configFile.close();
}
int main() {
try {
std::string configFilePath = "config.txt";
std::string targetLine = readConfigString(configFilePath, 2); // 读取第二行
std::cout << "Read line: " << targetLine << std::endl;
// 替换成你想写的字符串
std::string newLine = "New string to write";
writeConfigString(configFilePath, newLine, 3); // 写入第三行新的字符串
}
catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
```
在这个例子中,`readConfigString`函数用于读取指定行的字符串,`writeConfigString`函数用于写入新的字符串。注意,文件路径和行号需要根据实际情况进行调整。如果你不希望每个字符串都有固定的前缀,可以直接在写入时省略。
阅读全文