比较文件中的字符串行
Comparing lines of strings from a file
我有一个我读过的文件,我想把每一行当作一个字符串来读,并比较每一行来找到某些关键字,如果我找到了这些关键字,就把这些关键字中的所有内容取出来,并从中生成一个新的字符串。有可能有多个行具有相同的关键字,所以我想创建单独的字符串…
我现在有一些难看的代码,放在这里会很尴尬,谁能告诉我正确的方向,如何做到这一点…
如果你愿意,我可以把我的代码放在这里,但我必须解释很多。
阿古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古
GUU ACA UUG CGC GAU GGG CCG CGA GAC CCG GGU UUA AAG UAG GUG A
UUA CAU UGC GCG M GGC CUC GAG ACC CGG GUU UAA AGU AGG UGA
UGG M AAA UUU GGG CCC AGA GCU CCG GGU AGC GCG UUA CAU UGA
这是我的文本文件的一部分。我想找到'M',然后找到实例:1)UAA, 2) UAG,或3)UGA。让每一个都成为一个单独的字符串,这样我就可以比较它们的长度。我尝试使用赋值操作符,但每次都会打印出相同的字符串。
。我想我要做的就是找到'M'的任何实例,当我找到时,我想把整行变成一个字符串,这样我就可以比较字符串了。
ifstream code_File ("example.txt"); // open text file.
if (code_File.is_open()) {
while (code_File.good()) {
getline(code_File,line); //get the contents of file
cout << line << endl; // output contents of file on screen.
found = line.find_first_of('M', 0); // Finding start code
if (found != string::npos) {
code_Assign.assign(line, int(found), 100); //assign the line to code_Assign and print out string from where I found the start code 'M'.
cout << endl << "code_Assign: " << code_Assign << endl << endl;
这似乎是grep
或sed
或awk
标准Posix实用程序的好任务。
如果你想在程序中更快地解析它,考虑使用标准的解析技术,例如使用ANTLR
我根本不清楚你想做什么,然而:
要读取一行并将其放入单个字符串中:使用std::getline
。
在另一个字符串中查找一个固定字符串,使用std::search
;更多的复杂的模式,使用boost::regex
(或std::regex
,如果你有c++编译器11日)。std::search
将返回一个迭代器和两个迭代器可用于构造新字符串。regex
解决方案是否可以捕获,这样就可以访问中间的字符串直接(或间接);这在很大程度上取决于模式的复杂程度regex
解决方案不工作时,您想要捕获的字符串是以重复的模式)。然而,如果没有更多的信息,它就是
试着准确地说明你的问题;我想你会发现
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 有没有办法从非C/C++文件中读取C++原始字符串文字的内容
- 如何打开并写入一个名称取自C++中字符串的文件
- 如何从二进制文件中读取字符串
- 如何在 c++ 中使用 getline 从文件中读取字符串?
- 将字符串与文件上的数据进行比较
- 用户输入字符串的文件附加问题..C++
- 如何从文件中读取两个字符串和数字数组,并将它们存储在对象向量中
- 如何使字符串出现在编译的二进制可执行文件的开头?
- 使用文件内容作为硬编码字符串
- 将文件复制到自定义位置,存在字符串转换问题
- 将二进制字符串/文件内容从 c++ 传递到节点 js
- 在字符串.h文件中调用函数而不带对象
- 将带有引号和逗号的字符串文件读入字符串数组
- 如何从字符串/文件中分离字符和整数
- 将字符串文件存储到动态数组中
- 如何用C++将字符串文件Txt解析成数组
- 如何用Boost::Spirit解析复杂的字符串文件
- 如何从C语言的第二行读取字符串文件
- 一个很好的性能替代PHP-字符串/文件操作