您好我想阅读并删除/ *和(星号) /之间的某些部分。 / (这里是星号)和* /之间有多行。所以我想我必须从文本文件中读取所有行并检查它们。使用while循环中的substr()方法可以很容易地删除单行上的字符串。任何建议将不胜感激。
答案 0 :(得分:1)
您可以使用shell进程来帮助您:
cat example.c | tr -d "/\*.*\*/" > new_example.c
答案 1 :(得分:1)
您可以将文件的所有内容都读成字符串,例如:
#include <fstream>
#include <string>
#include <cerrno>
#include <iostream>
std::string contents;
std::ifstream in("c:\\file.txt", std::ios::in | std::ios::binary);
if (in) {
in.seekg(0, std::ios::end);
contents.resize(in.tellg());
in.seekg(0, std::ios::beg);
in.read(&contents[0], contents.size());
in.close();
}
然后,使用正则表达式,您可以提取/ *和* /:
之间的所有内容#include <regex>
std::smatch m;
std::regex e ("(?:/\\*(?:[^*]|(?:\\*+[^*/]))*\\*+/)|(?://.*)");
while (std::regex_search (contents, m, e)) {
for (auto x : m) {
std::cout << x << std::endl;
}
contents = m.suffix().str();
}
对于每个匹配,/ *和* /之间的内容设置在变量m中,然后您可以操作它的内容。
读取这样的文件:
/ *
由Felipe Cardoso于2014年2月7日创建。
版权所有(c)2014 MobileCard。保留所有权利。
* /
第一行内容
第二行内容
/ *功能描述...... * /
文件结束
结果是: